Java中的JTextField和JTextArea有什么区别?

What are the differences between JTextField and JTextArea in Java?

JTextField和JTextAreain Java之间的主要区别在于,JTextField允许在GUI应用程序中输入单行文本,而JTextAreaallow允许在GUI应用程序中输入多行文本。

JTextField

  • JTextFeldis是最重要的组件之一,它允许用户以单行格式输入文本值。
  • 当我们尝试在其中输入一些输入时,JTextField将生成一个ActionListener接口。
  • JTextComponent是JTextField的超类,它提供JTextfield使用的一组通用方法。
  • JTextField类中的重要方法是setText(),getText(),setEnabled()等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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

  • JTextArea是多行文本组件,用于显示文本或允许用户输入文本。
  • JTextArea将生成CaretListener接口。
  • JTextComponent是JTextArea的超类,它提供JTextArea使用的一组通用方法。
  • JTextArea类中的重要方法是setText(),append(),setLineWrap(),setWrapStyleWord(),setCaretPosition()等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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);
 }
}

输出量