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占用八个字 ...
随机推荐
- EventWaitHandle 第一课
本篇通过一个列子使用EventWaitHandle实现两个线程的同步.请参看下面的列子. using System; using System.Collections.Generic; using S ...
- GoCN每日新闻(2019-10-26)
GoCN每日新闻(2019-10-26) 1. GateKeeper:滴滴开源的使用Go编写的不依赖分布式数据库的API网关 https://mp.weixin.qq.com/s/gpQSPJ-uRp ...
- C Primer Plus--高级数据结构之二叉树
目录 二叉搜索树 Binary Search Tree 用C构建二叉树ADT 树结构的定义 C Primer Plus--高级数据结构表示之二叉树 二叉搜索树 Binary Search Tree 二 ...
- 关于集成通用mapper的Mybatis代码生成器产生的model类注解
主要是@Table.@Id.@GeneratedValue.@Column 4个注解 这四个注解都来自javax.persistence包,是Java持久层规范,单纯的Mybatis并不认识这四个注解 ...
- mysql 显示表结构
例子 mysql> show columns from table1; +------------+------------------+------+-----+---------+----- ...
- 仿站技术——获取和使用某些网站的iconfont图标字体
前言: 很多前端新手在仿一些大型网站的时候经常遇到一个问题:该网站使用了图标字体——iconfont,虽然现在阿里有开源的iconfont库,但是还是没有原网站的效果(本人强迫症但非处女座).所以此文 ...
- 【算法编程 C++ Python】根据前序遍历、中序遍历重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- rust结构体
//Rust 并不允许只将某个字段标记为可变 struct User { email: String, name:String, age:i32, sex:String, active:bool, } ...
- 为什么GPU不能代替CPU?
gpu就是并行处理强大, cpu很多功能gpu都没有. 什么指令流水化, 多进程管理之类的. gpu没有多少自主处理指令的能力, 基本是指令靠cpu 计算靠gpu.GPU工作原理是cpu 处理指令,遇 ...
- 利用select/poll监听多个设备详解
如果一个应用程序去处理多个设备,例如应用程序读取网路数据,按键,串口,一般能想到的有三种方法: 方法1:串行+阻塞的方式读取:while(1) { read(标准输入);read(网络);}缺点:每当 ...