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)相关推荐

  1. 单击时选择HTML文本输入中的所有文本

    我有以下代码在HTML网页中显示文本框. <input type="text" id="userid" name="userid" v ...

  2. java fx choicebox_JavaFX:具有图像和文本的ChoiceBox

    我想用JavaFX ChoiceBox创建一个下拉菜单,其中每个条目都包含一个不同的图标,旁边是一个短文本. (例如,在语言选择器中,左侧有一个小标志,右侧有该语言的名称.) 做这个的最好方式是什么? ...

  3. php文本输入数字,JavaScript实现文本框只能输入数字的方法介绍

    在我们日常开发中,为了更好的给用户带来体验,我们有的时候需要限制文本框输入内容的类型,这里我们很多时候都会使用到正则表达式来完成,今天我们就给大家介绍下JavaScript实现文本框只能输入数字.小数 ...

  4. Word处理控件Aspose.Words功能演示:用Java从Word文档中提取文本

    Aspose.Words For .NET是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsof ...

  5. 如何在React Native中使用文本输入组件?

    You know, an app becomes more authentic and professional when there is the interaction between the a ...

  6. Java文本框只有一行数据,Java只允许输入数目字的文本框

    Java只允许输入数字的文本框 package com.han; import javax.swing.JTextField; import javax.swing.text.AttributeSet ...

  7. java文本编辑器课程设计报告_java课程设计报告 心得体会——计算器、文本编辑器.doc...

    java课程设计报告 心得体会--计算器.文本编辑器.doc 还剩 24页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内 ...

  8. JavaFX实现图片显示,文本输入,表格显示

    测试开发了一个javaFx写的支持文本输入,pdf文件转成图片显示,可以进行图标显示的demo,其中用Eclipse实现,代码结构如下图所示: Main.java代码如下所示: package app ...

  9. java生成图片,可设置背景,文本+公式图片+图片

    三个对外方法实现功能 // 设置图片样式 长度 高度 背景色 设置背景,为null是空白背景 public void setImage(int width, int height, Color col ...

最新文章

  1. 《XNA高级编程:Xbox 360和Windows》1-1
  2. 牛客网【每日一题】4月21日题目精讲 糖糖别胡说,我真的不是签到题目
  3. DataGridView中的CheckBox
  4. linux下的yum命令详解
  5. 数据库大咖解读“新基建”,墨天轮四重好礼相送!
  6. Kylin 2.6.0JDBC方式访问
  7. eclipse——Error exists in required project Proceed with launch?
  8. 阿里巴巴发布第一台云电脑“无影” 可线上无限扩容升级
  9. c语言如何删除链表相同元素,【图片】想问一道链表题,如何删除重复元素【c语言吧】_百度贴吧...
  10. Java之JSON详解
  11. 重学数据结构:三对角矩阵公式推导过程
  12. C语言极速学习开发——51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学习的精神之灯-上)
  13. Safari Web Extension 开发(1)
  14. 空城计课件软件测试,空城计课件公开课.ppt
  15. android wifi智能硬件4g,智能硬件 篇五:把WiFi带在身上,告别宽带!华为随行WiFi2畅享版真实体验...
  16. 原生汇率计算器系统源代码
  17. 安卓手机内存卡测试软件,安卓手机硬件检测软件
  18. 台式计算机强制关机,台式电脑强制关机按什么键
  19. 又一个非常好的项目管理系统--ONES
  20. Unix/Linux中的read和write函数

热门文章

  1. Zynga跨平台计划难以挽回股价跳水
  2. 6万字解决算法面试中的深度学习基础问题
  3. nginx 的使用(反向代理、动静分离)
  4. Linux内核小梳理
  5. 基于Python的淘宝自动回复助手
  6. TTL与CMOS 电路
  7. 告别BenQ, 新选blackberry
  8. 卡巴斯基专业版KAV pro 5.0.372
  9. Win10 数字权力激活
  10. linux swing 字体颜色,Unix/Linux平台下JDK 1.2 中Swing的中文显示