ความแตกต่างหลัก: JTextField รับข้อความ บรรทัดเดียว (single line) ส่วน JTextArea รับข้อความ หลายบรรทัด (multiple lines)
JTextField
- คอมโพเนนต์รับข้อมูลข้อความ บรรทัดเดียว
- สร้าง ActionListener เมื่อกด Enter
- Superclass: JTextComponent
- เมธอดสำคัญ: setText(), getText(), setEnabled()
ตัวอย่าง JTextField
import javax.swing.*;
import java.awt.*;
public class JTextFieldTest {
public static void main(String[] args) {
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(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
- คอมโพเนนต์ข้อความ หลายบรรทัด ใช้แสดงหรือรับข้อความยาว
- สร้าง CaretListener (ติดตามตำแหน่งเคอร์เซอร์)
- Superclass: JTextComponent
- เมธอดสำคัญ: setText(), append(), setLineWrap(), setWrapStyleWord(), setCaretPosition()
ตัวอย่าง 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); // เพิ่ม Scroll
frame.add(scrollPane, BorderLayout.CENTER);
CaretListener listener = new CaretListener() {
public void caretUpdate(CaretEvent e) {
System.out.println("Dot: " + e.getDot());
System.out.println("Mark: " + e.getMark());
}
};
textArea.addCaretListener(listener);
frame.setSize(250, 150);
frame.setVisible(true);
}
}
ตารางเปรียบเทียบ
| คุณสมบัติ | JTextField | JTextArea |
|---|---|---|
| จำนวนบรรทัด | 1 บรรทัด | หลายบรรทัด |
| Listener หลัก | ActionListener | CaretListener |
| Scroll | ไม่ต้องการ | ควรใช้ JScrollPane |
| เมธอดพิเศษ | - | append, setLineWrap, setWrapStyleWord |