文档



JavaFX:使用JavaFX UI组件

30 嵌入式平台上的UI控件

除了完整的桌面功能外,JavaFX软件开发工具包(SDK)还引入了为触摸设备设计的UI控件的新操作能力。

本章介绍了在嵌入式环境中使用JavaFX UI控件的具体内容。

嵌入式运行时特性

尽管JavaFX UI控件不包含任何额外的公共API来在嵌入式环境中工作,但为了使开发人员能够在触摸设备上使用桌面控件在其JavaFX应用程序中进行工作,进行了重大的实现更改。

支持触摸设备

JavaFX SDK引入了UI控件的额外操作能力,用于触摸设备:手势和触摸。手势可以用于触摸屏和触摸板操作,但触摸仅适用于触摸屏操作。在当前版本的JavaFX SDK中,仅支持单点触摸和滑动手势。

有关在JavaFX中处理手势和触摸事件的更多信息,请参阅事件处理中的使用触摸设备的事件处理章节。

虚拟键盘

虚拟键盘是一种控件,可以在没有硬件键盘的设备上输入文本。它的操作方式与任何硬件键盘相同,只是由于空间限制,数字和符号位于一个点击之外。 图30-1显示了虚拟键盘的示例。

图30-1 虚拟键盘

图30-1的描述如下
"图30-1 虚拟键盘"的描述

当文本输入字段获得焦点时,虚拟键盘会自动显示。请注意,与键盘关联的控件在键盘显示时仍然可见。无需将父舞台向上推动。键盘从底部区域滑入,将父舞台向上推动,以便保持与键盘关联的控件在屏幕上可见。

当虚拟键盘出现时,用户可以通过点击相应的键来输入字符。然后,与该键关联的字符将发送到控件。用户可以输入字母、数字和符号字符。要在键盘之间切换,他们需要使用ABC/!#123键和Shift键。要访问不常用的字符,用户需要长时间按下相应的键,并从弹出菜单中选择目标键,如图30-2所示。

图30-2 输入不常用字符

图30-2的描述如下
"图30-2 输入不常用字符"的描述

表30-1列出了在触摸设备上虚拟键盘中可能的导航操作。

表格30-1 虚拟键盘内的导航

操作 按键序列

输入字母。

在字母键盘上:输入字母键。

在数字/备选键盘上:点击“ABC”键,然后输入字母键。

输入大写字母。

在字母键盘上:点击Shift键一次,然后输入字母键。

输入大写字母。

在字母键盘上:点击Shift键两次,然后点击字母键。

输入数字。

在数字/备选键盘上:输入数字。

在字母键盘上:点击“!#123”键,然后输入任意数字。

输入备选符号。

在数字/备选键盘上:输入备选符号。

在字母键盘上:点击“!#123”键,然后输入备选符号。

删除字符。

点击退格键以删除光标左侧的字符。

确认输入的数据。

点击回车键以确认输入的数据。

隐藏虚拟键盘。

点击键盘最下一行最左边的隐藏按钮。


当应用程序的UI界面需要输入电子邮件地址、URL或仅数字符号时,您可以设置其中一种替代键盘布局。如示例30-1所示,此设置针对特定的文本控件进行定义。

示例30-1 设置虚拟键盘的电子邮件布局

final TextField emailAddress = new TextField("myEmail@example.com");
text.getProperties().put("vkType", "email");

目前,vkType属性支持以下值:numericurlemailtext。最后一个对应默认布局。

图30-3显示了键盘的电子邮件布局。除了字母、数字和替代符号外,该布局还具有特别适用于快速输入电子邮件地址的"@"和".com"(".org")键。

图30-3 虚拟键盘的电子邮件布局

图30-3的描述
"图30-3 虚拟键盘的电子邮件布局"的描述

虚拟键盘的URL布局,如图30-4所示,没有空格键。相反,它提供了输入"www."和"http//"的功能。

图30-4 虚拟键盘的URL布局

图30-4的描述
"图30-4 虚拟键盘的URL布局"的描述

在某些UI中,用户只能输入数字。如图30-5所示,虚拟键盘的简化数字布局实现了这个任务。此布局中没有Shift键,也没有可用的替代符号。

图30-5 虚拟键盘的数字布局

图30-5的描述
"图30-5 虚拟键盘的数字布局"的描述

嵌入式平台上的UI控件外观

embedded.css样式表专为触摸设备平台设计。它补充了modena.css样式表并覆盖了一些样式。当检测到触摸设备平台时,UAStylesheetLoader类管理UI控件的样式,切换CSS文件。

embedded.css样式表改变了以下控件的外观:

  • ScrollBarScrollPane — 重新定义了滚动元素

  • TextAreaTextFieldPasswordFieldDatePicker — 可视化光标

  • ContextMenu — 引入了水平上下文菜单

滚动控件

在移动触摸平台上,滚动窗格通过针对滚动视图内容的触摸手势来进行滚动。当用户不与滚动窗格进行交互时,滚动条会隐藏,即使内容大于滚动窗格。滚动条会在触摸手势执行后自动出现,但它们只是内容大小和位置的指示器,而不是用户用于滚动的活动控件。当滚动条出现时,它们会覆盖可见内容,而不像在桌面平台上那样移动它们,如图30-6所示。

图30-6 桌面和嵌入式环境中滚动窗格的外观

图30-6的描述
"图30-6 桌面和嵌入式环境中滚动窗格的外观"的描述

内容停止滚动时,滚动条会自动消失。

文本输入控件

在触摸设备上,TextAreaTextFieldPasswordField被实现为用户可以输入单行或多行文本的矩形空间。与文本控件的交互在所有平台上都是相似的。然而,在嵌入式环境中,插入符号用于方便导航和文本选择。虚拟键盘用于输入字符到文本控件中。

图30-7显示了在触摸设备上运行的TextFieldSample应用程序。插入符号指示用户在虚拟键盘的帮助下输入符号的位置。请参阅TextFieldSample.java中的代码。

图30-7 TextField控件的外观

图30-7的描述如下
"图30-7 TextField控件的外观"的描述

当文本输入字段处于焦点状态时,虚拟键盘会自动显示,并在设备旋转时做出反应。如果编辑状态启用,当用户需要在TextFieldTextAreaPasswordField和其他UI控件中输入文本时,虚拟键盘会出现。要隐藏键盘,用户可以点击隐藏按钮或点击控件外部。

上下文菜单

嵌入式环境下上下文菜单的默认外观被更改为水平布局的菜单项。

当用户长按时,会调用上下文菜单。如果剪贴板中没有内容,则上下文菜单显示“选择”和“全选”菜单项。如果剪贴板中有内容,则上下文菜单显示如图30-8所示。

图30-8 上下文菜单的外观

图30-8的描述如下
"图30-8 上下文菜单的外观"的描述

如果文本控件中的文本被选中,则显示剪切、复制、粘贴和全选菜单项,如图30-9所示。

图30-9 执行选择后上下文菜单的外观

图30-9的描述如下
"图30-9 执行选择后上下文菜单的外观"的描述

在JavaFX SDK中,您可以找到适用于触摸设备的另一个样式表。 embedded-qvga.css文件定义了嵌入式设备(具有QVGA屏幕)的CSS样式。特别是,它为TextFieldTextArea控件指定了替代的填充。

嵌入式平台上可用的UI控件功能

除了前一节提到的视觉变化之外,UI控件的行为也被修改以适应单点触摸和滑动手势。 表30-2总结了这些变化。

表格 30-2 嵌入式运行时特定功能

界面控件 用户操作 触摸支持

Button, Hyperlink, MenuButton, ToggleButton

点击。

激活按钮。

CheckBox

点击。

切换复选框的选中和取消选中状态。

ComboBox

点击下拉图标。

显示或隐藏活动列表。当活动列表打开时,文本字段中显示的项目被选中。

点击文本字段。

对于不可编辑的组合框:显示活动列表。

对于可编辑的组合框:将插入符放入文本字段中。

点击列表中的项目。

关闭活动列表并提交值。

点击列表外部。

关闭列表。

拖动。

根据拖动手势连续滚动内容。

放下。

停止滚动。

滑动。

调用加速滚动。

ListView

拖动。

根据拖动手势连续滚动内容。

放下。

停止滚动。

滑动。

调用加速滚动。

点击。

选择一个项目并激活与之关联的操作。如果内容正在滚动,则停止滚动。

双击。

如果启用,进入内联编辑模式。

TextFieldTextAreaPasswordField

点击。

设置插入符。

双击。

选择内容。

长按。

打开上下文菜单。

滑动。

调用加速滚动。

拖动。

根据拖动手势连续滚动内容。

放下。

停止滚动。当用户将内容“超滚”到TextArea边界之外时,放下手势会释放内容,并平滑地返回到TextArea的边界。

RadioButton

点击。

如果单选按钮已选中,则不执行任何操作。如果取消选中,则点击会选中它,并取消选中组中的其他单选按钮。

ScrollBarScrollView

拖动。

根据拖动手势连续滚动内容。

拖动。

停止滚动。

滑动。

调用加速滚动。

点击。

选择一个项目并激活与之关联的操作。如果内容正在滚动,则停止滚动。

TableViewTreeView

点击。

选择单元格或调用操作(如果单元格可操作)。展开或折叠树视图的节点。

双击。

如果所选单元格支持编辑,则切换到编辑模式。

拖动。

根据拖动手势连续滚动内容。

放下。

停止滚动。

滑动。

调用内容的加速滚动。

ColorPicker

在颜色字段或颜色调色板的自定义颜色区域中短按一个颜色。

更新颜色选择器中的颜色。关闭颜色调色板。应用颜色。

在调色板外部点击。

关闭调色板。

在自定义颜色对话框窗口的颜色字段中的任何位置点击。

更新RGB、HSB和Web窗格中的值。更新颜色预览中的新颜色。

在自定义颜色对话框窗口的色调条中点击任意位置。

更新RGB、HSB和Web面板中的值。更新自定义颜色对话框窗口中的新颜色。

在滑块上点击任意位置,或将滑块向左或向右拖动。

关闭对话框窗口。关闭颜色调色板。更新颜色选择器。应用颜色。

Pagination

点击页面按钮。

打开所选页面。

点击下一页按钮,向左滑动。

打开下一页。

点击上一页按钮,向右滑动。

打开上一页。

DatePicker

点击日期字段。

在字段中显示光标;虚拟键盘出现。

点击日历图标。

显示和隐藏日历。

点击左侧或右侧的日历箭头。

显示上一个或下一个月份和年份。

点击日历中的任意日期。

使用所选日期更新字段并关闭日历。

点击日历外部。

关闭日历,不更新字段。


当应用程序在触摸设备上运行时,表格30-2中提到的所有操作都是可用的,并且不需要任何额外的代码。

在嵌入式触摸平台上不可用的UI控件功能

以下列表显示了当前在嵌入式平台上禁用的一些UI控件功能:

  • 表视图中的列调整大小、列重新排列和数据排序

  • 列表视图和树视图中的多选

  • 密码字段中的文本复制支持

在嵌入式触摸平台上不可用的其他功能

以下JavaFX功能在嵌入式平台上不受支持:

  • Stage类与桌面交互相关的功能在某些嵌入式平台上不可用。例如,在这些平台上,Stage窗口将没有标题或装饰,并且用户无法调整其大小。

  • Web组件 - 一个提供Web浏览器和完整浏览功能的用户界面组件。有关更多信息,请参见将HTML内容添加到JavaFX应用程序

  • 媒体 - 通过JavaFX的Java API提供的媒体功能。有关更多信息,请参见将媒体资源合并到JavaFX应用程序中

关闭窗口

目录

JavaFX:使用JavaFX UI组件

展开 折叠