循着Swing的旧例,JavaFX仍然提供了三种文本输入框,分别是单行输入框TextField、密码输入框PasswordField、多行输入框TextArea。这些输入框都由抽象类TextInputControl派生而来,因此拥有共同的编辑方法,常用的主要有下列两个:
setEditable:设置输入框能否编辑。为true表示能够编辑,为false表示不能编辑。
setPromptText:设置输入框的提示语,用来提示用户可以输入什么样的文本。
文本输入框与文本标签的区别在于,输入框内的文字允许编辑,而标签文字不允许编辑。尽管如此,输入框依旧要在界面上显示文字,故而它拥有以下与Label控件同样的方法:
setPrefSize:设置输入框的推荐宽高。
setText:设置输入框的文本。
setFont:设置输入框的字体。
setBackground:设置输入框的背景。
至于Label控件的其它方法如setAlignment、setTextFill、setWrapText、setGraphic,由于涉及到具体细节,因此TextInputControl类并未提供。除此之外,JavaFX的三种输入框各有千秋,接下来将对它们分别予以详细说明。

1、单行输入框TextField
TextField控件对应Swing的JTextField,它只能输入一行的文字,另外提供了下列两个专属方法:
setAlignment:设置输入框的对齐方式。该方法等同于Label控件的同名方法。
setPrefColumnCount:设置输入框的推荐列数。
下面是在界面上添加单行输入框的代码片段:

      Button btn1 = new Button("单行输入框"); // 创建一个按钮btn1.setOnAction(new EventHandler<ActionEvent>() { // 设置按钮的单击事件@Overridepublic void handle(ActionEvent arg0) { // 处理单击事件HBox hbox = new HBox(); // 创建一个水平箱子Label label = new Label("请输入手机号码:"); // 创建一个标签TextField field = new TextField(); // 创建一个单行输入框field.setPrefSize(200, 50); // 设置单行输入框的推荐宽高field.setEditable(true); // 设置单行输入框能否编辑field.setPromptText("请输入手机号码"); // 设置单行输入框的提示语field.setAlignment(Pos.CENTER_LEFT); // 设置单行输入框的对齐方式field.setPrefColumnCount(11); // 设置单行输入框的推荐列数hbox.getChildren().addAll(label, field); // 给水平箱子添加一个单行输入框borderPane.setCenter(hbox); // 把水平箱子放到边界窗格的中央}});flowPane.getChildren().add(btn1); // 往流式窗格上添加按钮

运行包含以上测试代码的应用程序,单击按钮后的窗口界面如下图所示,可见在TextField中填写的文字以明文显示。

2、密码输入框PasswordField
PasswordField控件对应Swing的JPasswordField,它实际上继承自TextField,唯一区别是输入的文字以圆点代替,连回显字符的设置方法都未提供。下面是在界面上添加密码输入框的代码片段:

        Button btn2 = new Button("密码输入框"); // 创建一个按钮btn2.setOnAction(new EventHandler<ActionEvent>() { // 设置按钮的单击事件@Overridepublic void handle(ActionEvent arg0) { // 处理单击事件HBox hbox = new HBox(); // 创建一个水平箱子Label label = new Label("请输入密码:"); // 创建一个标签PasswordField field = new PasswordField(); // 创建一个密码输入框field.setPrefSize(200, 50); // 设置密码输入框的推荐宽高field.setEditable(true); // 设置密码输入框能否编辑field.setPromptText("请输入密码"); // 设置密码输入框的提示语field.setAlignment(Pos.CENTER_LEFT); // 设置密码输入框的对齐方式field.setPrefColumnCount(11); // 设置密码输入框的推荐列数hbox.getChildren().addAll(label, field); // 给水平箱子添加一个密码输入框borderPane.setCenter(hbox); // 把水平箱子放到边界窗格的中央}});flowPane.getChildren().add(btn2); // 往流式窗格上添加按钮

运行包含以上测试代码的应用程序,单击按钮后的窗口界面如下图所示,可见在PasswordField中填写的文字以密文显示。

3、多行输入框TextArea
TextArea控件对应Swing的JTextArea,它允许输入多行文本,且文字固定朝左上角对齐,所以该控件没有setAlignment方法,反而多出了setWrapText换行方法。TextArea额外多出的几个方法说明如下:
setWrapText:设置输入框文本是否支持自动换行。该方法等同于Label控件的同名方法。
setPrefColumnCount:设置输入框的推荐列数。
setPrefRowCount:设置输入框的推荐行数。
下面是在界面上添加多行输入框的代码片段:

     Button btn3 = new Button("多行输入框"); // 创建一个按钮btn3.setOnAction(new EventHandler<ActionEvent>() { // 设置按钮的单击事件@Overridepublic void handle(ActionEvent arg0) { // 处理单击事件HBox hbox = new HBox(); // 创建一个水平箱子hbox.setPrefSize(300, 80); // 设置水平箱子的推荐宽高Label label = new Label("请输入评价:"); // 创建一个标签TextArea area = new TextArea(); // 创建一个多行输入框area.setMaxHeight(85); // 设置多行输入框的最大高度//area.setMaxWidth(300); // 设置多行输入框的最大宽度area.setPrefSize(200, 50); // 设置多行输入框的推荐宽高area.setEditable(true); // 设置多行输入框能否编辑area.setPromptText("请输入评价"); // 设置多行输入框的提示语area.setWrapText(true); // 设置多行输入框是否支持自动换行。true表示支持,false表示不支持。area.setPrefColumnCount(11); // 设置多行输入框的推荐列数area.setPrefRowCount(3); // 设置多行输入框的推荐行数hbox.getChildren().addAll(label, area); // 给水平箱子添加一个多行输入框borderPane.setCenter(hbox); // 把水平箱子放到边界窗格的中央}});flowPane.getChildren().add(btn3); // 往流式窗格上添加按钮

运行包含以上测试代码的应用程序,单击按钮后的窗口界面如下图所示,可见TextArea的确支持输入多行文本。


继续在多行输入框中填写文字,一旦文字总高度超过输入框的高度,输入框右侧就会自动显示滚动条,此时窗口界面如下图所示。


由图示可见JavaFX的TextArea默认集成了滚动条控件,无需像Swing的JTextArea那样得程序员手工操作。


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

转载于:https://www.cnblogs.com/pinlantu/p/11379719.html

Java开发笔记(一百三十九)JavaFX的输入框相关推荐

  1. Android开发笔记(三十九)Activity的生命周期

    与生命周期有关的方法 下面是Activity类与生命周期有关的方法: onCreate : 创建页面 onStart : 开始页面 onStop : 停止页面 onResume : 恢复页面 onPa ...

  2. Android开发笔记(八十九)单例模式

    基本概念 单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,从而方便对实例个数的控制并节约系统资源. 单例模式有三个特点: 1.某个类只能有一个实例: 2.它要自行创建这个实例: 3.它只有 ...

  3. Android开发笔记(七十九)资源与权限校验

    硬件资源 因为移动设备的硬件配置各不相同,为了防止使用了不存在的设备资源,所以要对设备的硬件情况进行检查.一般情况下,前置摄像头.部分传感器在低端手机上是没有的,像SD卡也可能因为用户没插卡使得找不到 ...

  4. Slicer学习笔记(三十九)slicer中Markups模块

    Slicer学习笔记(三十九)slicer中Markups模块 1.概念 1.1.Markups模块简介 1.2.应用方向 1.3.界面面板 1.Markups List 2.Buttons And ...

  5. WPF,Silverlight与XAML读书笔记第三十九 - 可视化效果之3D图形

    原文:WPF,Silverlight与XAML读书笔记第三十九 - 可视化效果之3D图形 说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘> ...

  6. Java开发笔记(八十六)通过缓冲区读写文件

    前面介绍了利用文件写入器和文件读取器来读写文件,因为FileWriter与FileReader读写的数据以字符为单位,所以这种读写文件的方式被称作"字符流I/O",其中字母I代表输 ...

  7. Java开发笔记(五十)几种开放性修饰符

    前面介绍子类继承父类的时候,提到了public(公共)和private(私有)两个修饰符,其中public表示它所修饰的实体是允许外部访问的:而private表示它所修饰的实体不允许外部访问,只能在当 ...

  8. Java学习笔记(三十五)

    在完成对C语言的学习后,我最近开始了对C++和Java的学习,目前跟着视频学习了一些语法,也跟着敲了一些代码,有了一定的掌握程度.现在将跟着视频做的笔记进行整理.本篇博客是整理Java知识点的第三十五 ...

  9. Android开发笔记(五十九)巧用传感器

    传感器Sensor 传感器是Android用来感知周围环境以及运动信息的工具.因为具体的感应信息依赖于相关硬件,所以虽然Android提供了众多的感应器,但不是每部手机都能支持这么多感应器,恰恰相反, ...

  10. Java开发笔记(三十三)字符包装类型

    正如整型int有对应的包装整型Integer那样,字符型char也有对应的包装字符型Character.初始化字符包装变量也有三种方式,分别是:直接用等号赋值.调用包装类型的valueOf方法.使用关 ...

最新文章

  1. JsonDB php json数据库 NoSql
  2. mysql删除emp表的语句_MySQL删除数据表(DORP TABLE语句)
  3. cas内外网同时访问_科普:CAS 和 ABA
  4. 《深入解析Android 虚拟机》——导读
  5. 动态规划 —— 阶乘
  6. 编程让鼠标一直动_相见恨晚的效率提升工具,低价捡漏可以自定义编程快捷键的鼠标...
  7. 数学建模四大模型、历年国赛题目以及优秀论文(备战2021年数模国赛)
  8. NTC热敏电阻测试和检验设备
  9. 铅蓄电池首批规范企业名单出炉 多家上市公司入围
  10. 图片文字识别的方法有哪些?
  11. bp抓包挂代理127.0.0.1服务器出现“有软件正在阻止Firefox安全连接至网站”问题的解决方法
  12. 华为锁屏后微信无法连接服务器,华为手机锁屏时无法接收微信消息怎么办?
  13. 洛谷P3933 Chtholly Nota Seniorious 【二分 + 贪心 + 矩阵旋转】
  14. jpa报错:mappedBy reference an unknown target entity property:
  15. 自定义钉钉机器人发消息@所有人
  16. 腾讯 X5 不能加载内核
  17. HTTP协议请求方式: 中GET、POST和HEAD的介绍
  18. 我的世界服务器怎么无限附魔,我的世界最好的附魔时运和无限,有一种方法让你快速获得!...
  19. 访问github、人工智能论文网址
  20. 第十一届蓝桥杯——字串排序(DP)

热门文章

  1. oracle 级联外键约束,Oracle 外键的相关约束中级联删除的方案
  2. android灰度发布平台,移动APP灰度发布策略
  3. java servlet JSP 区别_servlet和jsp的区别
  4. 19春北理工计算机应用基础,19春北理工《计算机应用基础》在线作业(02)【标准答案】.doc...
  5. HDFS之namenode文件解析
  6. Spring Boot 文件上传下载、url 映射虚拟路径、解决下载文件名称乱码
  7. 小马哥-Java 微服务实践 - Spring Boot 系列-01Java 微服务实践 - Spring Boot 系列(一)初体验...
  8. 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_4、快速创建SpringBoot应用之自动创建web应用...
  9. 空间查询时出错误 An expected Field was not found or could not be retrieved properly. [SHAPE.AREA] 问题的解决...
  10. 通过sql脚本可以从数据库中查到数据,但是通过jdbc却获取不到