前面介绍了文本标签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开发笔记(序)章节目录

最新文章

  1. session过期返回登录页面跳出frame
  2. <input />文字方框中,字体颜色的变化 要求默认的字体颜色是灰色,当要输入字时,字体是正常的黑色
  3. html5,视频的兼容
  4. BZOJ1188 [HNOI2007]分裂游戏(SG函数)
  5. 使用grep查找文件中指定字符出现的次数
  6. 如何用十条命令在一分钟内检查Linux服务器性能
  7. unity3d Find()使用
  8. JavaScript进阶篇 - -第1章 系好安全带
  9. NodeJS学习笔记(一)——搭建开发框架Express,实现Web网站登录验证
  10. Maven项目下update maven后Eclipse报错:java.lang.ClassNotFoundException: ContextLoaderL
  11. leetcode — merge-sorted-array
  12. 解决 .NET Core 在 Linux 下的时区问题
  13. DFSMN结构快速解读
  14. Linux命令学习总结:date命令【转】
  15. 02: docker高级篇
  16. JAVA基础部分复习(一、8中基础类型,以及String相关内容)
  17. winform 可拖动无边框窗体解决办法
  18. AngularJS学习笔记(四)内置指令
  19. P4782 【模板】2-SAT 问题 && 2-SAT问题
  20. Ruby中Enumerable模块的一些实用方法

热门文章

  1. LG1036
  2. 实训作业6 (数据I/O)
  3. webuploader之大文件分段上传、断点续传
  4. Binding a Xamarin.Forms WebView to ReactiveUI View Model using Custom Type Converters
  5. [RN] React Native 使用 react-native-vector-icons 图标显示问号
  6. Flutter 简介(事件、路由、异步请求)
  7. 原创:搜索排序算法之自定义性能优良的PriorityQueue(与Python的heap比较)
  8. GoCN每日新闻(2019-10-17)
  9. java通过请求对象获取ip地址、获取ip地址
  10. python 操作redis,存取为字节格式,避免转码加