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整合Bubbo
一.创建springboot_dubbo_provider项目 1 创建service层接口 public interface IDoSomeService { public String sayHi ...
- EFK项目操作(待完善)
Environment:{ 三台服务器均安装 kafka zookeeper filebeat logstash kibana } 一.首先安装zookeeper,kafka,让机器有 leader ...
- MongoDB TTL集合与固定集合
1.固定集合 MongoDB可以创建固定长度的集合,可以设置最大的集合空间或最大的集合数.创建集合的语法如下: db.createCollection("collection ...
- BZOJ 2006: [NOI2010]超级钢琴 ST表+堆
开始想到了一个二分+主席树的 $O(n\log^2 n)$ 的做法. 能过,但是太无脑了. 看了一下题解,有一个 ST 表+堆的优美解法. 你发现肯定是选取前 k 大最优. 然后第一次选的话直接选固定 ...
- 嘉立创制作PCB流程
现在做板子基本上是选择嘉立创和捷配,今天看一下嘉立创如何下PCB和STM贴片单,改天再写一下捷配的下单 我喜欢用下单助手,比较方便 注意需要把自己的板子的PCB文件用压缩软件生成压缩包文件,名字自己取 ...
- PHP正则表达式提取html超链接中的href地址
$preg='/<a .*?href="(.*?)".*?>/is'; preg_match_all($preg,$str,$array2); ;$i<count ...
- P4279 【[SHOI2008]小约翰的游戏】
我怎么什么都不会啊\(QAQ\)博弈论怎么和期望一样玄学啊\(QAQ\) 我们分几种情况讨论: \(Case1\):只有一堆且为1,那么后手胜利 \(Case2\):每一堆都是1,那么只需要判断奇偶性 ...
- Noip2019暑期训练2
题目名称 骑士遍历 和谐俱乐部 农场派对 对称二叉树 存盘文件名 knight Beautiful party tree 输入文件名 knight.in Beautiful.in party.in ...
- vue子组件与子组件之前传值-----最简单办法
1.在main.js中定义一个值(红色为重点) new Vue({ el: '#app', data: { Bus: new Vue() }, router, store, render: h =&g ...
- 剑指offer:二叉搜索树与双向链表
题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 思路分析: 这道题一开始的思路是借用队列结构,首先中序遍历二叉树,按顺序 ...