Difference between JTextField and JFormattedTextField in Java
In this tutorial, we are going to see difference between JTextField and JFormattedTextField in Java. JTextField can be used for plain text while a JFormattedTextField is a class that can extend JTextField and it can be used to define any format for the text it contains phone numbers, email addresses, dates, etc.
JTextField
- JTextField is one of the most important components that allow the user to enter a text value in a single line.
- JTextField can generate ActionListener interface when we try to enter a value into the text field and it can generate CaretListener interface every time the cursor changes its position.
- JTextField can also generate MouseListener and KeyListener interfaces.
Example :
import java.awt.*; import javax.swing.*; public class JTextFieldExample extends JFrame { public JTextFieldExample() { setTitle("JTextField Example"); setLayout(new FlowLayout()); JTextField text = new JTextField(20); add(text); setSize(350,80); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } public static void main(String args[]) { new JTextFieldExample(); } }
Output:

JFormattedTextField
JFormattedTextField class is a subclass of JTextField class.
- JFormattedTextField is like JTextField, except that it checks the validity of the characters and can be associated with a Formatter that specifies the characters that the user can enter.
- JFormattedTextField is a subclass of Format class for creating a formatted text field. We can create a Formatter, customize it if necessary. We can call the constructor JFormattedTextField(Format format) which takes an argument of type Format.
Example :
import java.awt.*; import javax.swing.*; import javax.swing.text.*; public class JFormattedTextFieldExample extends JFrame { JFormattedTextField text; public JFormattedTextFieldExample() { setTitle("JTextField Example"); setLayout(new FlowLayout()); // Format a phone number try { MaskFormatter formatter = new MaskFormatter("##-##-##-##-##"); formatter.setPlaceholderCharacter('#'); text = new JFormattedTextField(formatter); text.setColumns(20); } catch(Exception e) { e.printStackTrace(); } add(text); setSize(350,80); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } public static void main(String args[]) { new JFormattedTextFieldExample(); } }
Output:

[st_adsense]