Java开发笔记(一百三十九)JavaFX的输入框
循着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的输入框相关推荐
- Android开发笔记(三十九)Activity的生命周期
与生命周期有关的方法 下面是Activity类与生命周期有关的方法: onCreate : 创建页面 onStart : 开始页面 onStop : 停止页面 onResume : 恢复页面 onPa ...
- Android开发笔记(八十九)单例模式
基本概念 单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,从而方便对实例个数的控制并节约系统资源. 单例模式有三个特点: 1.某个类只能有一个实例: 2.它要自行创建这个实例: 3.它只有 ...
- Android开发笔记(七十九)资源与权限校验
硬件资源 因为移动设备的硬件配置各不相同,为了防止使用了不存在的设备资源,所以要对设备的硬件情况进行检查.一般情况下,前置摄像头.部分传感器在低端手机上是没有的,像SD卡也可能因为用户没插卡使得找不到 ...
- Slicer学习笔记(三十九)slicer中Markups模块
Slicer学习笔记(三十九)slicer中Markups模块 1.概念 1.1.Markups模块简介 1.2.应用方向 1.3.界面面板 1.Markups List 2.Buttons And ...
- WPF,Silverlight与XAML读书笔记第三十九 - 可视化效果之3D图形
原文:WPF,Silverlight与XAML读书笔记第三十九 - 可视化效果之3D图形 说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘> ...
- Java开发笔记(八十六)通过缓冲区读写文件
前面介绍了利用文件写入器和文件读取器来读写文件,因为FileWriter与FileReader读写的数据以字符为单位,所以这种读写文件的方式被称作"字符流I/O",其中字母I代表输 ...
- Java开发笔记(五十)几种开放性修饰符
前面介绍子类继承父类的时候,提到了public(公共)和private(私有)两个修饰符,其中public表示它所修饰的实体是允许外部访问的:而private表示它所修饰的实体不允许外部访问,只能在当 ...
- Java学习笔记(三十五)
在完成对C语言的学习后,我最近开始了对C++和Java的学习,目前跟着视频学习了一些语法,也跟着敲了一些代码,有了一定的掌握程度.现在将跟着视频做的笔记进行整理.本篇博客是整理Java知识点的第三十五 ...
- Android开发笔记(五十九)巧用传感器
传感器Sensor 传感器是Android用来感知周围环境以及运动信息的工具.因为具体的感应信息依赖于相关硬件,所以虽然Android提供了众多的感应器,但不是每部手机都能支持这么多感应器,恰恰相反, ...
- Java开发笔记(三十三)字符包装类型
正如整型int有对应的包装整型Integer那样,字符型char也有对应的包装字符型Character.初始化字符包装变量也有三种方式,分别是:直接用等号赋值.调用包装类型的valueOf方法.使用关 ...
最新文章
- JsonDB php json数据库 NoSql
- mysql删除emp表的语句_MySQL删除数据表(DORP TABLE语句)
- cas内外网同时访问_科普:CAS 和 ABA
- 《深入解析Android 虚拟机》——导读
- 动态规划 —— 阶乘
- 编程让鼠标一直动_相见恨晚的效率提升工具,低价捡漏可以自定义编程快捷键的鼠标...
- 数学建模四大模型、历年国赛题目以及优秀论文(备战2021年数模国赛)
- NTC热敏电阻测试和检验设备
- 铅蓄电池首批规范企业名单出炉 多家上市公司入围
- 图片文字识别的方法有哪些?
- bp抓包挂代理127.0.0.1服务器出现“有软件正在阻止Firefox安全连接至网站”问题的解决方法
- 华为锁屏后微信无法连接服务器,华为手机锁屏时无法接收微信消息怎么办?
- 洛谷P3933 Chtholly Nota Seniorious 【二分 + 贪心 + 矩阵旋转】
- jpa报错:mappedBy reference an unknown target entity property:
- 自定义钉钉机器人发消息@所有人
- 腾讯 X5 不能加载内核
- HTTP协议请求方式: 中GET、POST和HEAD的介绍
- 我的世界服务器怎么无限附魔,我的世界最好的附魔时运和无限,有一种方法让你快速获得!...
- 访问github、人工智能论文网址
- 第十一届蓝桥杯——字串排序(DP)
热门文章
- oracle 级联外键约束,Oracle 外键的相关约束中级联删除的方案
- android灰度发布平台,移动APP灰度发布策略
- java servlet JSP 区别_servlet和jsp的区别
- 19春北理工计算机应用基础,19春北理工《计算机应用基础》在线作业(02)【标准答案】.doc...
- HDFS之namenode文件解析
- Spring Boot 文件上传下载、url 映射虚拟路径、解决下载文件名称乱码
- 小马哥-Java 微服务实践 - Spring Boot 系列-01Java 微服务实践 - Spring Boot 系列(一)初体验...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_4、快速创建SpringBoot应用之自动创建web应用...
- 空间查询时出错误 An expected Field was not found or could not be retrieved properly. [SHAPE.AREA] 问题的解决...
- 通过sql脚本可以从数据库中查到数据,但是通过jdbc却获取不到