文本类组件

除了按钮之外，文本输入组件可能是最简单的一类组件。本节将要介绍的文本输入组件包括文本域（JTextField）、密码域（JPasswordField）、文本区（JTextArea）。而 JTextComponent 为所有 Swing 文本组件的根类，它们之间的关系图如图 1 所示：

图 1 文本组件的关系图

## 1.文本域

文本域（javax.swing.JTextField）同其他的语言的单行文本组件一样，实现了单行输入的文本框。此类的构造函数包括：

(1)JTextField()

(2)JTextField(Document doc, String text, int columns)

(3)JTextField(int columns)

(4)JTextField(String text)

(5JTextField(String text, int columns)

该文本域的默认值为“Default Content”，默认长度为 20 个字符。它在程序中的用法如下例程序段：

Container con = getContentPane();

con.setLayout(new FlowLayout());

JLabel jl = new JLabel(“文本域”);

con.add(jl);

JTextField tf = new JTextField(20);

con.add(tf);

程序的运行结果为。如图 2 所示：

图 5-26 程序的运行结果图

## 2.密码域

密码域（javax.swing.JPasswordField）是 JTextField 的直接子类，所以具有文本域的一切性质。同时，输入的字符以“回送字符（echochar）”为代表（通常为*）。

## 3.文本区

文本区（JTextArea）与文本域的区别主要是在于文本区可以显示多行文本，而文本域只显示单行文本。文本区支持换行，通过 setLineWrap 方法来实现。同时，也支持滚动显示，但必须在 JScrollPane 的协助下完成。

JTextArea 组件可以使用下列构造函数创建：

(1)JTextArea()

(2)JTextArea(int rows, int cols)

(3)JTextArea(String text)

(4)JTextArea(String text, int rows, int cols)

(5)JTextArea(Document doc)

(6)JTextArea(Document doc, String text, int rows, int cols)

它在程序中的运用如下列：

…

JLabel jl = new JLabel(“文本区”);

con.add(jl);

JTextArea ta = new JTextArea(5,10);

con.add(ta);

…

程序运行结果如图 3 所示：

图 3 程序运行结果图