DOC-03-08 文本框(Text Field)

本章讨论Text Field组件的功能。

TextField 类实现了一个接收和显示文本输入的UI组件。它提供了从用户接收文本输入的功能。这个类和另一个文本输入组件PasswordField一样,都继承自TextInput 类。TextInput 类是JavaFX
API
中所有文本组件的超类。

8-1显示了一个典型的LabelText Field界面

8-1 LabelText Field

3-8-1 text-field-single

创建一个Text Field

8-1中,Text Field通过和一个Label组合来指示在文本框中应该输入的内容类型。

8-1 创建一个Text Field

你可以如例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所示的应用程序显示了3Text
Field
,并处理用户在其中输入的数据。

8-2 TextField样例应用程序

3-8-2 text-field

代码片段例8-2创建了那三个Text Field和两个Button,然后使用GridPane 容器将他们添加到了应用程序的Scene中。这个容器在你要为UI组件实现一个灵活的布局时非常方便。

8-2 添加Text FieldApplication

现在花点时间来学习一下这段代码。namelastNamecomment Text Field都是通过TextField 类的空构造方法创建的。不像例8-1,这段代码中没有伴随Text Field使用Label。替代方案是,提示说明可以提醒用户在Text Field中输入何种类型的数据。方法setPromptText定义了在应用程序启动时Text Field显示的字符串。把例8-2添加到应用程序后,其运行结果如图8-3所示。

8-3 三个带有提示信息的Text Field

3-8-3 text-field-prompt

提示文本和输入在Text Field中的文本的区别是提示文本无法通过getText 方法取得。

在真实的应用程序中,输入到Text Field中的数据会根据应用程序特定业务需求的逻辑进行处理。下一节解释如何使用Text Field评估输入的数据并给用户产生一个反馈。

处理Text Field数据

如前面所说,用户输入在Text Field中的文本数据可以通过TextInput 类的getText 方法取出。

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

8-3 SubmitClear 按钮定义操作

被添加到GridPane 容器中的Label 组件显示了应用程序对用户的反馈信息。当用户点击Submit按钮,setOnAction 方法检查comment Text Field。如果其包含了非空字符串,一个thank-you信息将会被显示。否则,应用程序会提示用户comment 信息还没有填写,如图8-4所示。

8-4 未填写Comment Text Field

3-8-4 text-field-nocomment

当用户点击Clear按钮,三个Text Field中的内容都会被清除。

看以下几个能用于Text Field的有用方法:

    · copy()将当前选中范围内的文本复制到剪切板,并保留选中的内容

    · cut()将当前选中范围内的文本复制到剪切板,并移除选中的内容

    · selectAll() – 选中Text Field中所有输入的文本

    · paste()将剪切板中的内容粘贴到这个Text Field中,并替换当前选中的内容

相关的API文档

    · TextField

    · TextInputControl

 

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: http://www.javafxchina.net/blog/2015/04/doc03_textfield/
百度已收录