Java开发笔记(一百二十一)AWT输入框

前面介绍了文本标签Label,该控件展现的文字是不可编辑的,若要用户在界面上输入文本,就得使用专门的编辑框控件。在AWT的控件家族当中,用做编辑框的有两种控件,分别是单行输入框TextField和多行输入框TextArea。
TextField主要用于输入短小精悍的单行文字,跟Label同样,它拥有setPreferredSize、setText与setFont方法,但没有setAlignment方法,由于输入框内的文字只能向左对齐。除此以外,TextField还提供了下列几个与编辑框有关的方法:
getText:获取输入框中的文本串。
setColumns:设置输入框的长度为11个字符,但容许输入更多的字符。
setEditable:设置输入框是否容许编辑。true表示容许,false表示不容许。
setEchoChar:设置输入框的回显字符。该方法用来实现密码输入框的功能,用户每输入一个字符,密码框就回显一个星号符“*”,这个星号即是setEchoChar方法设置的回显字符。
以输入11位手机号码为例,此时的手机号输入框可经过如下代码建立:html

		TextField field = new TextField(); // 建立一个单行输入框
		field.setColumns(11); // 设置输入框的长度为11个字符
		field.setEditable(true); // 设置输入框容许编辑

 

在面板对象中添加field,运行测试代码以后,手机号输入框的界面效果以下图所示:测试


再以输入6位密码为例,此时的密码输入框可经过如下代码建立:编码

		TextField field = new TextField(); // 建立一个单行输入框
		field.setColumns(6); // 设置输入框的长度为6个字符
		field.setEchoChar('*'); // 设置输入框的回显字符为星号
		field.setEditable(true); // 设置输入框容许编辑

 

一样在面板对象中添加field,运行测试代码以后,密码输入框的界面效果以下图所示:3d


从上图可见,往密码框中输入字符,显示出来的都是星号。
须要特别注意的是,TextField提供了setEchoChar方法来设置回显字符,却未提供可以取消回显的逆向操做,这意味着:只要调用一次setEchoChar方法,那么该输入框将永远显示指定的回显符,而没法恢复显示明文。惟一的解决办法是,先从面板上移除这个输入框,重头建立新的输入框再添加到面板上,如此操做的代码片断示例以下:htm

				panelCenter.remove(field); // 从中央面板上移除设置了回显的密码框
				field = new TextField(); // 建立一个单行输入框
				field.setColumns(11); // 设置输入框的长度为11个字符
				panelCenter.add(field); // 在中央面板上添加输入框
				frame.setVisible(true); // 把最新的界面显示到窗口上

因为TextField只能输入一行文本,没法输入更多的文字,所以AWT又提供了TextArea来接收多行文本。与TextField相比,TextArea多了个setRows方法用于设置输入框的高度(若干行的文字高度),同时取消了回显符设置方法setEchoChar。下面是TextArea与编辑框有关的几个方法说明:对象

getText:获取输入框中的文本串。
setColumns:设置输入框的长度为11个字符,但容许输入更多的字符。
setRows:设置输入框的高度为3行字符,但容许输入更多行。
setEditable:设置输入框是否容许编辑。true表示容许,false表示不容许。
多行输入框在编码上没啥难点,好比显示一个20个字符宽、3行字符高的输入框,使用TextArea实现的代码片断以下:blog

		TextArea area = new TextArea(); // 建立一个多行输入框
		area.setEditable(true); // 设置输入框容许编辑
		area.setColumns(20); // 设置输入框的长度为20个字符
		area.setRows(3); // 设置输入框的高度为3行字符
		panel.add(area); // 在面板上添加多行输入框

 

运行以上的多行输入框代码,可看到以下图所示的界面效果。开发

 



更多Java技术文章参见《Java开发笔记(序)章节目录rem

相关文章
相关标签/搜索