Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่าง JTextField และ JTextArea ใน Java

ความแตกต่างหลัก: 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);
    }
}

ตารางเปรียบเทียบ

คุณสมบัติJTextFieldJTextArea
จำนวนบรรทัด1 บรรทัดหลายบรรทัด
Listener หลักActionListenerCaretListener
Scrollไม่ต้องการควรใช้ JScrollPane
เมธอดพิเศษ-append, setLineWrap, setWrapStyleWord