第一节 第二节 第三节 第四节 第五节 第六节 第七节 第八节 第九节 第十节 第十一节
第六节    文字输入组件
1.单行文本框和多行文本框
单行文本框(TextField)和多行文本框(TextArea)是由TextComponent类直接继承的,我们先讨论单行文本框。
单行文本框是一个单行显示区域,可以从键盘上接收用户输入。用户将数据输入文本框,然后按回车键就可以在程序中使用该数据。单行文本框也可以用于显示信息。表10.6列出了TextField类的构造函数。
表13.4 TextField类的构造函数及常用方法

构造函数

说明

public TextField()

创建一个TextField对象,默认列宽为2

public TextField(int cols)

创建一个指定列宽的TextField对象

public TextField(String text)

创建一个TextField对象,显示字符串text

public TextField(String text,int cols)

创建一个指定列宽的TextField对象,并显示字符串text

常用方法

说明

public void setEchoChar(char c)

设置用户输入字符时的回显字符

public void setText(String text)

设置单行文本框的文本内容

public String getText()

获取单行文本框的文本内容


【例13.4】演示单行文本框的构造函数及常用方法的使用。
//Fig. 10.10: TextFieldDemo.java
//Demonstration the TextField class constructors and methods.
import java.applet.Applet;
import java.awt.*;
public class TextFieldDemo extends Applet{
private TextField textField1,textField2;
public void init(){
//construct TextField with default text
textField1=new TextField("在这里输入用户名");
//construct TextField with 15 elements visible
textField2=new TextField(15);
//set the echo charactor
textField2.setEchoChar('*');
//add components to applet
add(new Label("用户名: "));
add(textField1);
add(new Label("密码: "));
add(textField2);
}
public void paint(Graphics g){
String s;
s="用户名: "+textField1.getText();
s=s+"密码: "+textField2.getText();
showStatus(s);
}
}
程序运行结果如图13.4。

图13.4 单行文本框示例

通过下列语句:
textField1=new TextField("在这里输入用户名");
textField2=new TextField(15);
创建了两个TextField的对象textField1和textField2,其中textField1的列宽为所显示字符串的长度,textField2的列宽为15,未显示任何文本。通过下列语句:
textField2.setEchoChar(('*');
设置了textField2的掩码字符,每当在该文本框中输入一个字符时,就会显示一个星号(*)。注意,虽然为textField2设置了掩码字符,但该文本框的getText方法仍然返回实际输入的字符串。
多行文本框(TextArea)可以显示多行文本,用户在多行文本框中击回车键会使光标移到下一行行首。表10.7列出了TextArea类的构造函数及常用方法。
表13.5 TextArea类的构造函数及常用方法

构造函数

说明

public TextArea()

创建一个TextArea对象

public TextArea(int rows,int cols)

创建一个指定行列的TextArea对象

public TextArea(String text)

创建一个含有指定文本的TextArea对象

public TextArea(String text, int rows,int cols)

创建一个指定行列并含有指定文本的TextArea对象

Public TextArea(String text,int rows, int cols, int scrollbars)

创建一个指定行列并含有指定文本及指定滚动条类型的TextArea对象,scrollbars可以取以下四个值之一:

SCROLLBARS_BOTH(默认),

SCROLLBARS_VERTICAL_ONLY,

SCROLLBARS_HORIZONTAL_ONLY,

SCROLLBARS_NONE

常用方法

说明

public void append(String s)

在多行文本框尾部添加文本

public void insert(String s,int pos)

在多行文本框指定位置插入文本

public void setText(String text)

设置多行文本框的文本内容

public String getText()

获取多行文本框的文本内容

public String getSelectedText()

获取多行文本框中选中的文本内容

Public void setEditable(boolean b)

设置多行文本框的可编辑状态


【例13.5】演示TextArea类的常用构造方法。其中一个多行文本框不允许用户进行编辑,而另一个则允许用户输入信息,如图10.11所示。
//Fig. 10.11: TextAreaDemo.java
//Creating TextArea Objects.
import java.applet.Applet;
import java.awt.*;
public class TextAreaDemo extends Applet{
private TextArea textArea1,textArea2;
public void init()
{
//creating 2 10*20 TextAreas
textArea1=new TextArea("Read-only Text!",10,20);
textArea2=new TextArea(10,20);
//set textArea1 read-only
textArea1.setEditable(false);
add(textArea1);
add(textArea2);
}
}

图13.5 创建多行文本框示例

程序中使用TextArea类创建多行文本框textArea1和textArea2。下列语句:
textArea1=new TextArea(""Read-only Text!"",10,20);
textArea1=new TextArea(10,20);
用于创建两个多行文本框,它们都包括10行、20列,其中,textArea1初始时显示文本“Read-only Text!”,textArea2初始时未显示任何文本。下列语句:
textArea1.setEditable(false);
使多行文本框textArea1不可编辑(你仍然可以把光标置于其中,但不能修改它的文本)。
多行文本框总是带有滚动条,仅当多行文本框中的文本超出其可见范围时,滚动条才能滚动。程序员无法直接控制这两个滚动条。