Java开发笔记(一百二十一)AWT输入框
前面介绍了文本标签Label,该控件展示的文字是不可编辑的,若要用户在界面上输入文本,就得使用专门的编辑框控件。在AWT的控件家族当中,用作编辑框的有两种控件,分别是单行输入框TextField和多行输入框TextArea。
TextField主要用于输入短小精悍的单行文字,跟Label一样,它拥有setPreferredSize、setText与setFont方法,但没有setAlignment方法,因为输入框内的文字只能向左对齐。除此之外,TextField还提供了下列几个与编辑框有关的方法:
getText:获取输入框中的文本串。
setColumns:设置输入框的长度为11个字符,但允许输入更多的字符。
setEditable:设置输入框是否允许编辑。true表示允许,false表示不允许。
setEchoChar:设置输入框的回显字符。该方法用来实现密码输入框的功能,用户每输入一个字符,密码框就回显一个星号符“*”,这个星号便是setEchoChar方法设置的回显字符。
以输入11位手机号码为例,此时的手机号输入框可通过以下代码创建:
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,运行测试代码之后,密码输入框的界面效果如下图所示:

从上图可见,往密码框中输入字符,显示出来的都是星号。
需要特别注意的是,TextField提供了setEchoChar方法来设置回显字符,却未提供能够取消回显的逆向操作,这意味着:只要调用一次setEchoChar方法,那么该输入框将永远显示指定的回显符,而无法恢复显示明文。唯一的解决办法是,先从面板上移除这个输入框,重头创建新的输入框再添加到面板上,如此操作的代码片段示例如下:
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实现的代码片段如下:
TextArea area = new TextArea(); // 创建一个多行输入框
area.setEditable(true); // 设置输入框允许编辑
area.setColumns(20); // 设置输入框的长度为20个字符
area.setRows(3); // 设置输入框的高度为3行字符
panel.add(area); // 在面板上添加多行输入框
运行以上的多行输入框代码,可看到如下图所示的界面效果。

更多Java技术文章参见《Java开发笔记(序)章节目录》
Java开发笔记(一百二十一)AWT输入框的更多相关文章
- Java开发笔记(二十一)二维数组的扩展
前面介绍的数组容纳的是一串数字,仿佛一根线把这组数字串了起来,故而它只是一维数组.一维数组用来表示简单的数列尚可,要是表达复杂的平面坐标系,那就力不从心了.由于平面坐标系存在水平和垂直两个方向,因此可 ...
- Java开发笔记(九十一)IO流处理简单的数据压缩
前面介绍的文件I/O,不管是写入文本还是写入对象,文件中的数据基本是原来的模样,用记事本之类的文本编辑软件都能浏览个大概.这么存储数据,要说方便确实方便,只是不够经济划算,原因有二:其一,写入的数据可 ...
- Java开发笔记(八十一)如何使用系统自带的注解
之前介绍继承的时候,提到对于子类而言,父类的普通方法可以重写也可以不重写,但是父类的抽象方法是必须重写的,如果不重写,编译器就直接在子类名称那里显示红叉报错.例如,以前演示抽象类用法之时,曾经把Chi ...
- Java开发笔记(二十三)数组工具Arrays
数组作为一种组合形式的数据类型,必然要求提供一些处理数组的简便办法,包括数组比较.数组复制.数组排序等等.为此Java专门设计了Arrays工具,该工具包含了几个常用方法,方便程序员对数组进行加工操作 ...
- Java开发笔记(二十四)方法的组成形式
经过前面的学习,我们发现演示的Java代码越来越复杂,而且每个例子的代码都堆在入口方法main内部,这会导致如下问题:1.一个方法内部堆砌了太多的代码行,看着费神,维护起来也吃力:2.部分代码描述的是 ...
- Java开发笔记(二十五)方法的输入参数
前面通过main方法介绍了方法的定义形式,对于方法的输入参数来说,还有几个值得注意的地方,接下来分别对输入参数的几种用法进行阐述.一个方法可以有输入参数,也可以没有输入参数,倘若无需输入参数,则方法定 ...
- Java开发笔记(二十六)方法的输出参数
前面介绍了方法的输入参数,与输入参数相对应的则为输出参数,输出参数也被称作方法的返回值,意思是经过方法的处理最终得到的运算数值.这个返回值可能是整型数,也可能是双精度数,也可能是数组等其它类型,甚至允 ...
- Java开发笔记(二十七)数值包装类型
方法的出现缘起优化代码结构,但它的意义并不局限于此,正因为有了方法定义,编程语言才更像一门能解决实际问题的工具,而不仅仅是只能用于加减乘除的计算器.在数学的发展过程中,为了表示四则运算,人们创造了加减 ...
- Java开发笔记(二十八)布尔包装类型
前面介绍了数值包装类型,因为不管是整数还是小数,它们的运算操作都是类似的,所以只要学会了Integer的用法,其它数值包装类型即可一并掌握.但是对于布尔类型boolean来说,该类型定义的是“true ...
- Java开发笔记(二十九)大整数BigInteger
早期的编程语言为了节约计算机的内存,给数字变量定义了各种存储规格的数值类型,比如字节型byte只占用一个字节大小,短整型short占用两个字节大小,整型int占用四个字节大小,长整型long占用八个字 ...
随机推荐
- SpringBoot第二节(SpringBoot整合Mybatis)
1.创建Spring Initiallizr项目 一直点击下一步 2.引入依赖 <dependencies> <dependency> <groupId>org.s ...
- bg/fg
将一个在后台暂停的命令,变成继续执行 (在后台执行). 一般ctrl+z就把前台命令调到了后台 将后台中的命令调至前台继续运行
- go与python的不同
go 开发中需要注意的与python的不同点 列出golang开发过程中与python的不同点,主要是在语法方面,golang的一些语法真是要人命啊. 1.golang可读性很强,与或对应&& ...
- pycharm plot独立窗口显示
import matplotlib.pyplot as plt ... plt.show() 进行如下设置: File->Settings->Tools->Python Scient ...
- Kubernetes kubectl 命令概述
kubectl用于运行Kubernetes集群命令的管理工具. 语法 kubectl [command] [TYPE] [NAME] [flags] command:指定要在一个或多个资源执行的操作 ...
- 辨析Java方法参数中的值传递和引用传递
小方法大门道 小瓜瓜作为一个Java初学者,今天跟我说她想通过一个Java方法,将外部变量通过参数传递到方法中去,进行逻辑处理,方法执行完毕之后,再对修改过的变量进行判断处理,代码如下所示. publ ...
- 使用lombok的@Builder的注解的一个坑
一开发说项目报错 java.lang.Long,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lan ...
- 通过OpenSSL来生成PEM格式的私钥、PKCS8格式的私钥、公钥|pfx格式的私钥、cer格式的公钥
1.生成PEM格式RSA私钥 不对输出的文件内容进行加密 openssl genrsa -out private-rsa.key 对输出的文件内容进行加密(DES/AES128/AES256等) op ...
- Redis自定义fastJson Serializer
public class FastJsonRedisSerializer<T> implements RedisSerializer<T> { public static fi ...
- 错误详情:已取消该操作。--------- 在 System.Threading.CancellationToken.ThrowOperationCanceledException()
错误详情:已取消该操作.--------- 在 System.Threading.CancellationToken.ThrowOperationCanceledException() 在 Syste ...