Khác biệt chính: JTextField cho phép nhập một dòng văn bản trong ứng dụng GUI, trong khi JTextArea cho phép nhập nhiều dòng văn bản.
JTextField
- Thành phần quan trọng cho phép người dùng nhập giá trị văn bản theo định dạng một dòng.
- Tạo ra interface ActionListener khi nhập dữ liệu.
- Lớp cha JTextComponent cung cấp các phương thức chung cho JTextField.
- Phương thức quan trọng: setText(), getText(), setEnabled().
Ví dụ JTextField
import javax.swing.*;
import java.awt.*;
public class JTextFieldTest {
public static void main(String[] args) {
final JFrame frame = new JFrame("JTextField Demo");
JLabel lblFirstName = new JLabel("First Name:");
JTextField tfFirstName = new JTextField(20);
lblFirstName.setLabelFor(tfFirstName);
JLabel lblLastName = new JLabel("Last Name:");
JTextField tfLastName = new JTextField(20);
lblLastName.setLabelFor(tfLastName);
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.add(lblFirstName);
panel.add(tfFirstName);
panel.add(lblLastName);
panel.add(tfLastName);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 100);
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.setVisible(true);
}
}
JTextArea
- Thành phần văn bản đa dòng (multi-line) để hiển thị hoặc cho phép nhập văn bản.
- Tạo ra interface CaretListener.
- Lớp cha JTextComponent cung cấp các phương thức chung cho JTextArea.
- Phương thức quan trọng: setText(), append(), setLineWrap(), setWrapStyleWord(), setCaretPosition().
Ví dụ JTextArea
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class JTextAreaTest {
public static void main(String args[]) {
JFrame frame = new JFrame("JTextArea Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
frame.add(scrollPane, BorderLayout.CENTER);
CaretListener listener = new CaretListener() {
public void caretUpdate(CaretEvent caretEvent) {
System.out.println("Dot: " + caretEvent.getDot());
System.out.println("Mark: " + caretEvent.getMark());
}
};
textArea.addCaretListener(listener);
frame.setSize(250, 150);
frame.setVisible(true);
}
}
Bảng so sánh tóm tắt
| Đặc điểm | JTextField | JTextArea |
|---|---|---|
| Số dòng | Một dòng (single-line) | Nhiều dòng (multi-line) |
| Listener chính | ActionListener | CaretListener |
| Cuộn (scroll) | Không hỗ trợ sẵn | Cần JScrollPane |
| Phương thức đặc biệt | setText, getText | append, setLineWrap, setWrapStyleWord |
| Phù hợp cho | Tên, email, mật khẩu, tìm kiếm | Mô tả, ghi chú, biên soạn văn bản |