翻译自   Text Field

本章讨论文本字段控件的功能。

TextField类实现接受并显示文本输入的UI控制。它提供了从用户接收文本输入的功能。与另一个文本输入控件一起,PasswordField此类扩展了TextInput类,它是通过JavaFX API提供的所有文本控件的超类。

图8-1显示了带有标签的典型文本字段。

图8-1标签和文本字段

创建文本字段

在示例8-1中,文本字段与标签结合使用,以指示应在字段中键入的内容的类型。

示例8-1创建文本字段

Label label1 = new Label("Name:");
TextField textField = new TextField ();
HBox hb = new HBox();
hb.getChildren().addAll(label1, textField);
hb.setSpacing(10);

您可以创建一个空文本字段,如例8-1所示,或者创建一个包含特定文本数据的文本字段。要使用预定义文本创建文本字段,请使用以下TextField类的构造函数:TextField("Hello World!")。您可以通过调用getText方法随时获取文本字段的值。

您可以应用类的setPrefColumnCount方法TextInput来设置文本字段的大小,定义为一次可以显示的最大字符数。

使用文本字段构建UI

通常,TextField对象在表单中用于创建多个文本字段。图8-2中的应用程序显示三个文本字段,并处理用户在其中输入的数据。

图8-2 TextFieldSample应用程序

例8-2中的代码片段创建了三个文本字段和两个按钮,并使用GridPane容器将它们添加到应用程序的场景中。当您需要为UI控件实现灵活的布局时,此容器特别方便。

示例8-2向应用程序添加文本字段

//Creating a GridPane container
GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
grid.setVgap(5);
grid.setHgap(5);
//Defining the Name text field
final TextField name = new TextField();
name.setPromptText("Enter your first name.");
name.setPrefColumnCount(10);
name.getText();
GridPane.setConstraints(name, 0, 0);
grid.getChildren().add(name);
//Defining the Last Name text field
final TextField lastName = new TextField();
lastName.setPromptText("Enter your last name.");
GridPane.setConstraints(lastName, 0, 1);
grid.getChildren().add(lastName);
//Defining the Comment text field
final TextField comment = new TextField();
comment.setPrefColumnCount(15);
comment.setPromptText("Enter your comment.");
GridPane.setConstraints(comment, 0, 2);
grid.getChildren().add(comment);
//Defining the Submit button
Button submit = new Button("Submit");
GridPane.setConstraints(submit, 1, 0);
grid.getChildren().add(submit);
//Defining the Clear button
Button clear = new Button("Clear");
GridPane.setConstraints(clear, 1, 1);
grid.getChildren().add(clear);

花点时间研究代码片段。的namelastNamecomment文本字段使用的空构造函数来创建TextField类。与示例8-1不同,此代码片段中的文本字段不附带标签。相反,提示字幕会通知用户在文本字段中输入的数据类型。该setPromptText方法定义应用程序启动时出现在文本字段中的字符串。当示例8-2添加到应用程序时,它会产生如图8-3所示的输出。

图8-3包含提示消息的三个文本字段

提示文本与文本字段中输入的文本之间的区别在于无法通过该getText方法获取提示文本。

在实际应用程序中,输入到文本字段的数据将根据特定业务任务所需的应用程序逻辑进行处理。下一节将介绍如何使用文本字段评估输入的数据并生成对用户的响应。

处理文本字段数据

如前所述,用户输入文本字段的文本数据可以通过类的getText方法获得TextInput

学习例8-3,学习如何处理TextField对象的数据。

示例8-3定义提交和清除按钮的操作

//Adding a Label
final Label label = new Label();
GridPane.setConstraints(label, 0, 3);
GridPane.setColumnSpan(label, 2);
grid.getChildren().add(label);//Setting an action for the Submit button
submit.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(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.");}}});//Setting an action for the Clear button
clear.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e) {name.clear();lastName.clear();comment.clear();label.setText(null);}
});

Label添加到GridPane容器的控件呈现应用程序对用户的响应。当用户单击“提交”按钮时,该setOnAction方法将检查comment文本字段。如果它包含非空字符串,则会呈现感谢信息。否则,应用程序通知用户尚未留下注释消息,如图8-4所示。

图8-4注释文本字段留空

当用户单击“清除”按钮时,将在所有三个文本字段中删除内容。

查看一些可用于文本字段的有用方法。

  • copy()- 将文本中当前选定的范围传输到剪贴板,保留当前选择。

  • cut()- 将文本中当前选定的范围传输到剪贴板,删除当前选择。

  • paste()- 将剪贴板中的内容传输到此文本中,替换当前选择。

相关的API文档  

  • TextField

  • TextInputControl

JavaFX UI控件教程(九)之Text Field相关推荐

  1. JavaFX UI控件教程(二)之JavaFX UI控件

    翻译自  JavaFX UI控件 本章概述了通过API提供的JavaFX UI控件. JavaFX UI控件是使用场景图中的节点构建的.因此,控件可以使用JavaFX平台的视觉丰富功能.由于JavaF ...

  2. JavaFX UI控件教程(一)之简述

    翻译自  JavaFX UI控件概述 关于本教程 本教程介绍JavaFX API中提供的内置JavaFX UI控件. 该文件包含以下章节: JavaFX UI控件 标签 按钮 单选按钮 切换按钮 复选 ...

  3. JavaFX UI控件教程(八)之Choice Box

    翻译自   Choice Box 本章介绍了选项框,这些UI控件提供了在几个选项之间快速选择的支持. 使用ChoiceBox该类将选择框添加到JavaFX应用程序.其简单的实现如图7-1所示. 图7- ...

  4. JavaFX UI控件教程(二十八)之UI控件的自定义

    翻译自  Customization of UI Controls 本章介绍了UI控件自定义的各个方面,并总结了Oracle提供的一些提示和技巧,以帮助您修改UI控件的外观和行为. 您可以通过应用层叠 ...

  5. JavaFX UI控件教程(二十三)之Menu

    翻译自  Menu 本章介绍如何创建菜单和菜单栏,添加菜单项,将菜单分组,创建子菜单以及设置上下文菜单. 您可以使用以下JavaFX API类在JavaFX应用程序中构建菜单. 菜单栏 菜单项 菜单 ...

  6. JavaFX UI控件教程(二十一)之Tooltip

    翻译自  Tooltip 在本章中,您将了解工具提示,即当鼠标光标悬停该控件时,可以为任何UI控件设置的控件. 的Tooltip类表示通常用于显示关于所述用户接口的控制附加信息的公共UI组件.可以通过 ...

  7. JavaFX UI控件教程(二十)之HTML Editor

    翻译自  HTML Editor 在本章中,您将学习如何使用嵌入式HTML编辑器编辑JavaFX应用程序中的文本. 该HTMLEditor控件是一个功能齐全的富文本编辑器.它的实现基于HTML5的文档 ...

  8. JavaFX UI控件教程(十六)之Separator

    翻译自  Separator 本章介绍如何使用分隔符组织JavaFX应用程序的UI组件. SeparatorJavaFX API中可用的类表示水平或垂直分隔线.它用于划分应用程序用户界面的元素,不会产 ...

  9. JavaFX UI控件教程(十五)之Combo Box

    翻译自   Combo Box 本章介绍如何在JavaFX应用程序中使用组合框.它讨论了可编辑和不可编辑的组合框,教您如何跟踪可编辑组合框中的更改并处理它们上的事件,并解释如何使用单元工厂来更改组合框 ...

最新文章

  1. 平衡二叉树-FHQ Treap(无旋平衡树)c/c++代码实现
  2. 一文应用 AOP | 最全选型考量 + 边剖析经典开源库边实践,美滋滋
  3. oracle 实现HA,oracle RAC的客户端HA配置
  4. jQuery 效果函数(三)
  5. 多线程:当你提交任务时,线程队列已经满了,这时会发生什么?
  6. bzoj2005: [Noi2010]能量采集
  7. 软概(lesson 2):课堂测试
  8. C/C++ BugPitfalls
  9. linux 踢出在线用户
  10. python爬虫中文乱码_Python 爬虫过程中的中文乱码问题
  11. linux 文件类型 时间戳 ls bash特性四 文件查看命令 cp move echo
  12. python网站上搜索答案_用python搭建百万赢家自动搜索答案
  13. 28个超有用的PPT小技巧,快来收藏
  14. “小而美”走到十字路口,吉利或收购魅族助车机闭环
  15. 华大移植SEGGER_RTT 打印
  16. bootstrap 下拉列表获取_Bootstrap框架下下拉菜单的实现(代码示例)
  17. 如何让excel在两个窗口分开显示
  18. VMVare 打不开磁盘xxx.vmdk
  19. DEV gridview数据筛选
  20. AHB-SRAM简单设计之架构图解

热门文章

  1. 10-5 5-5 查询只卖三种不同型号PC的厂商 (20 分)
  2. 7-40 奥运排行榜 (25 分)(详解+思路+map+vector做法)兄弟们冲压呀呀呀呀呀呀呀
  3. C++函数模板机制结论
  4. 《C++ Primer》2.6.1节练习
  5. hdu4911 Inversion-归并排序
  6. java编码给出二维数组List<List<Integer>>matrix,输出每列最小的值
  7. Go unsafe Pointer
  8. 玉柴spn码故障对照表_后处理的故障不总是尿素泵故障,也有可能是这些原因
  9. android webview framework,android – Webview导致ANR
  10. extern __shared__