30 嵌入式平台上的UI控件
除了完整的桌面功能外,JavaFX软件开发工具包(SDK)还引入了为触摸设备设计的UI控件的新操作能力。
本章介绍了在嵌入式环境中使用JavaFX UI控件的具体内容。
嵌入式运行时特性
尽管JavaFX UI控件不包含任何额外的公共API来在嵌入式环境中工作,但为了使开发人员能够在触摸设备上使用桌面控件在其JavaFX应用程序中进行工作,进行了重大的实现更改。
支持触摸设备
JavaFX SDK引入了UI控件的额外操作能力,用于触摸设备:手势和触摸。手势可以用于触摸屏和触摸板操作,但触摸仅适用于触摸屏操作。在当前版本的JavaFX SDK中,仅支持单点触摸和滑动手势。
有关在JavaFX中处理手势和触摸事件的更多信息,请参阅事件处理中的使用触摸设备的事件处理章节。
虚拟键盘
虚拟键盘是一种控件,可以在没有硬件键盘的设备上输入文本。它的操作方式与任何硬件键盘相同,只是由于空间限制,数字和符号位于一个点击之外。 图30-1显示了虚拟键盘的示例。
当文本输入字段获得焦点时,虚拟键盘会自动显示。请注意,与键盘关联的控件在键盘显示时仍然可见。无需将父舞台向上推动。键盘从底部区域滑入,将父舞台向上推动,以便保持与键盘关联的控件在屏幕上可见。
当虚拟键盘出现时,用户可以通过点击相应的键来输入字符。然后,与该键关联的字符将发送到控件。用户可以输入字母、数字和符号字符。要在键盘之间切换,他们需要使用ABC/!#123键和Shift键。要访问不常用的字符,用户需要长时间按下相应的键,并从弹出菜单中选择目标键,如图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
属性支持以下值:numeric
、url
、email
和text
。最后一个对应默认布局。
图30-3显示了键盘的电子邮件布局。除了字母、数字和替代符号外,该布局还具有特别适用于快速输入电子邮件地址的"@"和".com"(".org")键。
虚拟键盘的URL布局,如图30-4所示,没有空格键。相反,它提供了输入"www."和"http//"的功能。
在某些UI中,用户只能输入数字。如图30-5所示,虚拟键盘的简化数字布局实现了这个任务。此布局中没有Shift键,也没有可用的替代符号。
嵌入式平台上的UI控件外观
embedded.css
样式表专为触摸设备平台设计。它补充了modena.css
样式表并覆盖了一些样式。当检测到触摸设备平台时,UAStylesheetLoader
类管理UI控件的样式,切换CSS文件。
embedded.css
样式表改变了以下控件的外观:
-
ScrollBar
,ScrollPane
— 重新定义了滚动元素 -
TextArea
,TextField
,PasswordField
,DatePicker
— 可视化光标 -
ContextMenu
— 引入了水平上下文菜单
滚动控件
在移动触摸平台上,滚动窗格通过针对滚动视图内容的触摸手势来进行滚动。当用户不与滚动窗格进行交互时,滚动条会隐藏,即使内容大于滚动窗格。滚动条会在触摸手势执行后自动出现,但它们只是内容大小和位置的指示器,而不是用户用于滚动的活动控件。当滚动条出现时,它们会覆盖可见内容,而不像在桌面平台上那样移动它们,如图30-6所示。
内容停止滚动时,滚动条会自动消失。
文本输入控件
在触摸设备上,TextArea
、TextField
和PasswordField
被实现为用户可以输入单行或多行文本的矩形空间。与文本控件的交互在所有平台上都是相似的。然而,在嵌入式环境中,插入符号用于方便导航和文本选择。虚拟键盘用于输入字符到文本控件中。
图30-7显示了在触摸设备上运行的TextFieldSample应用程序。插入符号指示用户在虚拟键盘的帮助下输入符号的位置。请参阅TextFieldSample.java中的代码。
当文本输入字段处于焦点状态时,虚拟键盘会自动显示,并在设备旋转时做出反应。如果编辑状态启用,当用户需要在TextField
、TextArea
、PasswordField
和其他UI控件中输入文本时,虚拟键盘会出现。要隐藏键盘,用户可以点击隐藏按钮或点击控件外部。
嵌入式平台上可用的UI控件功能
除了前一节提到的视觉变化之外,UI控件的行为也被修改以适应单点触摸和滑动手势。 表30-2总结了这些变化。
表格 30-2 嵌入式运行时特定功能
界面控件 | 用户操作 | 触摸支持 |
---|---|---|
|
点击。 |
激活按钮。 |
|
点击。 |
切换复选框的选中和取消选中状态。 |
|
点击下拉图标。 |
显示或隐藏活动列表。当活动列表打开时,文本字段中显示的项目被选中。 |
点击文本字段。 |
对于不可编辑的组合框:显示活动列表。 对于可编辑的组合框:将插入符放入文本字段中。 |
|
点击列表中的项目。 |
关闭活动列表并提交值。 |
|
点击列表外部。 |
关闭列表。 |
|
拖动。 |
根据拖动手势连续滚动内容。 |
|
放下。 |
停止滚动。 |
|
滑动。 |
调用加速滚动。 |
|
|
拖动。 |
根据拖动手势连续滚动内容。 |
放下。 |
停止滚动。 |
|
滑动。 |
调用加速滚动。 |
|
点击。 |
选择一个项目并激活与之关联的操作。如果内容正在滚动,则停止滚动。 |
|
双击。 |
如果启用,进入内联编辑模式。 |
|
|
点击。 |
设置插入符。 |
双击。 |
选择内容。 |
|
长按。 |
打开上下文菜单。 |
|
滑动。 |
调用加速滚动。 |
|
拖动。 |
根据拖动手势连续滚动内容。 |
|
放下。 |
停止滚动。当用户将内容“超滚”到 |
|
|
点击。 |
如果单选按钮已选中,则不执行任何操作。如果取消选中,则点击会选中它,并取消选中组中的其他单选按钮。 |
|
拖动。 |
根据拖动手势连续滚动内容。 |
拖动。 |
停止滚动。 |
|
滑动。 |
调用加速滚动。 |
|
点击。 |
选择一个项目并激活与之关联的操作。如果内容正在滚动,则停止滚动。 |
|
|
点击。 |
选择单元格或调用操作(如果单元格可操作)。展开或折叠树视图的节点。 |
双击。 |
如果所选单元格支持编辑,则切换到编辑模式。 |
|
拖动。 |
根据拖动手势连续滚动内容。 |
|
放下。 |
停止滚动。 |
|
滑动。 |
调用内容的加速滚动。 |
|
|
在颜色字段或颜色调色板的自定义颜色区域中短按一个颜色。 |
更新颜色选择器中的颜色。关闭颜色调色板。应用颜色。 |
在调色板外部点击。 |
关闭调色板。 |
|
在自定义颜色对话框窗口的颜色字段中的任何位置点击。 |
更新RGB、HSB和Web窗格中的值。更新颜色预览中的新颜色。 |
|
在自定义颜色对话框窗口的色调条中点击任意位置。 |
更新RGB、HSB和Web面板中的值。更新自定义颜色对话框窗口中的新颜色。 |
|
在滑块上点击任意位置,或将滑块向左或向右拖动。 |
关闭对话框窗口。关闭颜色调色板。更新颜色选择器。应用颜色。 |
|
|
点击页面按钮。 |
打开所选页面。 |
点击下一页按钮,向左滑动。 |
打开下一页。 |
|
点击上一页按钮,向右滑动。 |
打开上一页。 |
|
|
点击日期字段。 |
在字段中显示光标;虚拟键盘出现。 |
点击日历图标。 |
显示和隐藏日历。 |
|
点击左侧或右侧的日历箭头。 |
显示上一个或下一个月份和年份。 |
|
点击日历中的任意日期。 |
使用所选日期更新字段并关闭日历。 |
|
点击日历外部。 |
关闭日历,不更新字段。 |
当应用程序在触摸设备上运行时,表格30-2中提到的所有操作都是可用的,并且不需要任何额外的代码。
在嵌入式触摸平台上不可用的其他功能
以下JavaFX功能在嵌入式平台上不受支持:
-
Stage
类与桌面交互相关的功能在某些嵌入式平台上不可用。例如,在这些平台上,Stage
窗口将没有标题或装饰,并且用户无法调整其大小。 -
Web组件 - 一个提供Web浏览器和完整浏览功能的用户界面组件。有关更多信息,请参见将HTML内容添加到JavaFX应用程序。
-
媒体 - 通过JavaFX的Java API提供的媒体功能。有关更多信息,请参见将媒体资源合并到JavaFX应用程序中。