java fx 文本输入,DOC-03-08 文本框(Text Field)
DOC-03-08 文本框(Text Field)
本章讨论Text Field组件的功能。
TextField类实现了一个接收和显示文本输入的UI组件。它提供了从用户接收文本输入的功能。这个类和另一个文本输入组件PasswordField一样,都继承自TextInput类。TextInput类是JavaFX
API中所有文本组件的超类。
图8-1显示了一个典型的Label加Text Field界面
图8-1 Label和Text Field
创建一个Text Field
例8-1中,Text Field通过和一个Label组合来指示在文本框中应该输入的内容类型。
例8-1创建一个Text Field
Java
Label label1 = new Label("Name:");
TextField textField = new TextField ();
HBox hb = new HBox();
hb.getChildren().addAll(label1, textField);
hb.setSpacing(10);
1
2
3
4
5
Labellabel1=newLabel("Name:");
TextFieldtextField=newTextField();
HBoxhb=newHBox();
hb.getChildren().addAll(label1,textField);
hb.setSpacing(10);
你可以如例8-1中所示的创建一个空的Text Field,或者创建一个带有指定文本数据的Text Field。要创建带有预定义文本的Text Field,使用TextField类如下的构造函数:TextField(“Hello
World!”)。你可以在任何时候通过 getText方法获取Text Field的值。
你可以使用TextInput类的setPrefColumnCount方法来设置Text Field的大小,这个大小是指同一时间可以显示的最大字符个数。
使用Text Field构建界面
一般TextField对象被用在表单中来创建多个Text Field。图8-2所示的应用程序显示了3个Text
Field,并处理用户在其中输入的数据。
图8-2 TextField样例应用程序
代码片段例8-2创建了那三个Text Field和两个Button,然后使用GridPane容器将他们添加到了应用程序的Scene中。这个容器在你要为UI组件实现一个灵活的布局时非常方便。
例8-2添加Text Field到Application
Java
//创建GridPane容器
GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
grid.setVgap(5);
grid.setHgap(5);
//定义Name Text Field
final TextField name = new TextField();
name.setPromptText("Enter your first name.");
GridPane.setConstraints(name, 0, 0);
grid.getChildren().add(name);
//定义Last Name Text Field
final TextField lastName = new TextField();
lastName.setPromptText("Enter your last name.");
GridPane.setConstraints(lastName, 0, 1);
grid.getChildren().add(lastName);
//定义Comment Text Field
final TextField comment = new TextField();
comment.setPromptText("Enter your comment.");
GridPane.setConstraints(comment, 0, 2);
grid.getChildren().add(comment);
//定义Submit Button
Button submit = new Button("Submit");
GridPane.setConstraints(submit, 1, 0);
grid.getChildren().add(submit);
//定义Clear Button
Button clear = new Button("Clear");
GridPane.setConstraints(clear, 1, 1);
grid.getChildren().add(clear);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//创建GridPane容器
GridPanegrid=newGridPane();
grid.setPadding(newInsets(10,10,10,10));
grid.setVgap(5);
grid.setHgap(5);
//定义Name Text Field
finalTextFieldname=newTextField();
name.setPromptText("Enter your first name.");
GridPane.setConstraints(name,0,0);
grid.getChildren().add(name);
//定义Last Name Text Field
finalTextFieldlastName=newTextField();
lastName.setPromptText("Enter your last name.");
GridPane.setConstraints(lastName,0,1);
grid.getChildren().add(lastName);
//定义Comment Text Field
finalTextFieldcomment=newTextField();
comment.setPromptText("Enter your comment.");
GridPane.setConstraints(comment,0,2);
grid.getChildren().add(comment);
//定义Submit Button
Buttοnsubmit=newButton("Submit");
GridPane.setConstraints(submit,1,0);
grid.getChildren().add(submit);
//定义Clear Button
Buttonclear=newButton("Clear");
GridPane.setConstraints(clear,1,1);
grid.getChildren().add(clear);
现在花点时间来学习一下这段代码。name,lastName和commentText Field都是通过TextField 类的空构造方法创建的。不像例8-1,这段代码中没有伴随Text Field使用Label。替代方案是,提示说明可以提醒用户在Text Field中输入何种类型的数据。方法setPromptText定义了在应用程序启动时Text Field显示的字符串。把例8-2添加到应用程序后,其运行结果如图8-3所示。
图8-3三个带有提示信息的Text Field
提示文本和输入在Text Field中的文本的区别是提示文本无法通过getText方法取得。
在真实的应用程序中,输入到Text Field中的数据会根据应用程序特定业务需求的逻辑进行处理。下一节解释如何使用Text Field评估输入的数据并给用户产生一个反馈。
处理Text Field数据
如前面所说,用户输入在Text Field中的文本数据可以通过TextInput类的getText方法取出。
学习例8-3中如何处理TextField对象的数据。
例8-3为Submit和Clear按钮定义操作
Java
//添加一个Label
final Label label = new Label();
GridPane.setConstraints(label, 0, 3);
GridPane.setColumnSpan(label, 2);
grid.getChildren().add(label);
submit.setOnAction((ActionEvent e) -> {
if (
(comment.getText() != null && !comment.getText().isEmpty())
) {
label.setText(name.getText() + " " +
lastName.getText() + ", "
+ "thank you for your comment!");
} else {
label.setText("You have not left a comment.");
}
});
clear.setOnAction((ActionEvent e) -> {
name.clear();
lastName.clear();
comment.clear();
label.setText(null);
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//添加一个Label
finalLabellabel=newLabel();
GridPane.setConstraints(label,0,3);
GridPane.setColumnSpan(label,2);
grid.getChildren().add(label);
submit.setOnAction((ActionEvente)->{
if(
(comment.getText()!=null&&!comment.getText().isEmpty())
){
label.setText(name.getText()+" "+
lastName.getText()+", "
+"thank you for your comment!");
}else{
label.setText("You have not left a comment.");
}
});
clear.setOnAction((ActionEvente)->{
name.clear();
lastName.clear();
comment.clear();
label.setText(null);
});
被添加到GridPane容器中的Label组件显示了应用程序对用户的反馈信息。当用户点击Submit按钮,setOnAction方法检查commentText Field。如果其包含了非空字符串,一个thank-you信息将会被显示。否则,应用程序会提示用户comment信息还没有填写,如图8-4所示。
图8-4未填写Comment Text Field
当用户点击Clear按钮,三个Text Field中的内容都会被清除。
看以下几个能用于Text Field的有用方法:
·copy()–将当前选中范围内的文本复制到剪切板,并保留选中的内容
·cut()–将当前选中范围内的文本复制到剪切板,并移除选中的内容
·selectAll()–选中Text Field中所有输入的文本
·paste()–将剪切板中的内容粘贴到这个Text Field中,并替换当前选中的内容
相关的API文档
·TextField
·TextInputControl
打赏一下
支付宝
微信
java fx 文本输入,DOC-03-08 文本框(Text Field)相关推荐
- 单击时选择HTML文本输入中的所有文本
我有以下代码在HTML网页中显示文本框. <input type="text" id="userid" name="userid" v ...
- java fx choicebox_JavaFX:具有图像和文本的ChoiceBox
我想用JavaFX ChoiceBox创建一个下拉菜单,其中每个条目都包含一个不同的图标,旁边是一个短文本. (例如,在语言选择器中,左侧有一个小标志,右侧有该语言的名称.) 做这个的最好方式是什么? ...
- php文本输入数字,JavaScript实现文本框只能输入数字的方法介绍
在我们日常开发中,为了更好的给用户带来体验,我们有的时候需要限制文本框输入内容的类型,这里我们很多时候都会使用到正则表达式来完成,今天我们就给大家介绍下JavaScript实现文本框只能输入数字.小数 ...
- Word处理控件Aspose.Words功能演示:用Java从Word文档中提取文本
Aspose.Words For .NET是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsof ...
- 如何在React Native中使用文本输入组件?
You know, an app becomes more authentic and professional when there is the interaction between the a ...
- Java文本框只有一行数据,Java只允许输入数目字的文本框
Java只允许输入数字的文本框 package com.han; import javax.swing.JTextField; import javax.swing.text.AttributeSet ...
- java文本编辑器课程设计报告_java课程设计报告 心得体会——计算器、文本编辑器.doc...
java课程设计报告 心得体会--计算器.文本编辑器.doc 还剩 24页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内 ...
- JavaFX实现图片显示,文本输入,表格显示
测试开发了一个javaFx写的支持文本输入,pdf文件转成图片显示,可以进行图标显示的demo,其中用Eclipse实现,代码结构如下图所示: Main.java代码如下所示: package app ...
- java生成图片,可设置背景,文本+公式图片+图片
三个对外方法实现功能 // 设置图片样式 长度 高度 背景色 设置背景,为null是空白背景 public void setImage(int width, int height, Color col ...
最新文章
- 《XNA高级编程:Xbox 360和Windows》1-1
- 牛客网【每日一题】4月21日题目精讲 糖糖别胡说,我真的不是签到题目
- DataGridView中的CheckBox
- linux下的yum命令详解
- 数据库大咖解读“新基建”,墨天轮四重好礼相送!
- Kylin 2.6.0JDBC方式访问
- eclipse——Error exists in required project Proceed with launch?
- 阿里巴巴发布第一台云电脑“无影” 可线上无限扩容升级
- c语言如何删除链表相同元素,【图片】想问一道链表题,如何删除重复元素【c语言吧】_百度贴吧...
- Java之JSON详解
- 重学数据结构:三对角矩阵公式推导过程
- C语言极速学习开发——51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学习的精神之灯-上)
- Safari Web Extension 开发(1)
- 空城计课件软件测试,空城计课件公开课.ppt
- android wifi智能硬件4g,智能硬件 篇五:把WiFi带在身上,告别宽带!华为随行WiFi2畅享版真实体验...
- 原生汇率计算器系统源代码
- 安卓手机内存卡测试软件,安卓手机硬件检测软件
- 台式计算机强制关机,台式电脑强制关机按什么键
- 又一个非常好的项目管理系统--ONES
- Unix/Linux中的read和write函数