JTextField dùng cho văn bản thuần túy trong khi JFormattedTextField mở rộng JTextField và dùng để đặt định dạng cho văn bản như số điện thoại, email, ngày tháng.
JTextField
- JTextField là component quan trọng cho phép nhập văn bản đơn dòng.
- Tạo giao diện ActionListener khi nhập input và CaretListener khi con trỏ di chuyển.
- Cũng tạo MouseListener và KeyListener.
Ví dụ JTextField
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();
}
}
Kết quả

JFormattedTextField
- Formatted text field là instance của JFormattedTextField - subclass trực tiếp của JTextField.
- Giống text field bình thường nhưng kiểm soát tính hợp lệ của ký tự người dùng nhập và liên kết với formatter chỉ định ký tự cho phép.
- JFormattedTextField dùng subclass của Format để xây dựng. Tạo formatter, tùy chỉnh nếu cần, gọi constructor JFormattedTextField(Format format).
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();
}
}
Kết quả
