
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
What are the differences between a JTextField and a JFormattedTextField in Java?
In Java, a JTextField can be used for plain text, whereas a JFormattedTextField is a class that extends JTextField, and it can be used to set any format to the text that it contains, phone numbers, e-mails, dates, etc.
JTextField
A JTextField is one of the most important components that allows the user to type an input text value in a single-line format. A JTextField can also generate the MouseListener and KeyListener interfaces.
Syntax
The following is the syntax for a JTextField initialization:
JTextField textField = new JTextField(20); // 20 columns wide
A JTextField can generate an ActionListener interface when we try to enter some input inside the text field, and it can generate a CaretListener interface each time the caret (i.e., the cursor) changes position.
Methods of JTextField
The following are some common methods in JTextField:
getText():
The getText() method retrieves the text entered in the field.
Method Declaration:
public String getText()
selectAll():
The selectAll() method selects all the text in the field.
Method Declaration:
public void selectAll()
getDocument():
The getDocument() method returns the underlying Document object, which allows for more advanced text manipulation.
Method Declaration:
public Document getDocument()
Common Use Cases for JTextField
The following are some common use cases for JTextField in Java:
- When we need to add simple text input (names, comments, search boxes).
- When there is no need for validation or formatting.
Example of JTextField
Below is an example of a JTextField on a Swing GUI in Java:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JTextFieldTest extends JFrame { JTextField jtf; public JTextFieldTest() { setTitle("JTextField Test"); setLayout(new FlowLayout()); jtf = new JTextField(15); add(jtf); jtf.addActionListener(new ActionListener() { public void actionPerformed (ActionEvent ae) { System.out.println("Event generated: " + jtf.getText()); } }); setSize(375, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } public static void main(String args[]) { new JTextFieldTest(); } }
Output
JFormattedTextField
A formatted text field is an instance of the class JFormattedTextField, which is a direct subclass of JTextField. A JFormattedTextField is like a normal text field except that it controls the validity of the characters the user types, and it can be associated with a formatter that specifies the characters the user can enter.
Syntax
The following is the syntax for a JFormattedTextField initialization:
MaskFormatter phoneFormatter = new MaskFormatter("(###) ###-####"); phoneFormatter.setPlaceholderCharacter('_'); JFormattedTextField phoneField = new JFormattedTextField(phoneFormatter); phoneField.setColumns(15);
A JFormattedTextField is a subclass of the Format class to build a formatted text field. We can create a formatter, customize it if necessary. We can call the JFormattedTextField(Format format) constructor, which takes an argument of type Format.
Methods in JFormattedTextField
The following are some common methods in JFormattedTextField:
getFormatter():
The getFormatter() method returns the current Formatter associated with the field.
Method Declaration:
public JFormattedTextField.AbstractFormatter getFormatter()
setValue():
The setValue() method sets the value of the field, automatically formatting it based on the Formatter.
Method Declaration:
public void setValue(Object value)
getValue():
The getValue() method returns the value of the field, potentially as a formatted object (e.g., a Number or Date).
Method Declaration:
public Object getValue()
Common Use Cases for JFormattedTextField
The following are some common use cases for JFormattedTextField in Java:
- When structured data input is required(dates, numbers, currencies).
- When there is a need for validation (e.g., correct date format).
- For masked input like credit cards, phone numbers.
Example of JFormattedTextField
Below is an example of a JFormattedTextField on a Swing GUI in Java:
import java.awt.*; import javax.swing.*; import javax.swing.text.*; public class JFormattedTextFieldTest extends JFrame { JFormattedTextField jftf; MaskFormatter mf; public JFormattedTextFieldTest() { setTitle("JFormattedTextField Test"); setLayout(new FlowLayout()); // A phone number formatter - (country code)-(area code)-(number) try { mf = new MaskFormatter("##-###-#######"); mf.setPlaceholderCharacter('#'); jftf = new JFormattedTextField(mf); jftf.setColumns(12); } catch(Exception e) { e.printStackTrace(); } add(jftf); setSize(375, 250); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public static void main(String args[]) { new JFormattedTextFieldTest(); } }
Output
Difference Table
The following are some key differences between a JTextField and a JFormattedTextField in Java:
Criteria | JTextField | JFormattedTextField |
---|---|---|
Input Type | Plain text | Formatted text (numbers, dates, etc.) |
Formatting | None | Supports formatting through Formatter |
Validation | Basic (e.g., character limit) | Advanced validation based on format |
Data Binding | Not directly supported | Supports data binding through Formatter |
Error Handling | Limited | Provides visual cues and error messages |