您可以使用 FocusManager 来指定一个顺序,当用户按 Tab 键在应用程序中定位时,组件将按此顺序接受焦点。您可以使用 FocusManager API 在文档中设置一个按钮,当用户按 Enter 键 (Windows) 或 Return 键 (Macintosh) 时,该按钮会接收键盘输入。例如,当用户填完一张表单后,他们应该能够使用 Tab 键在字段之间切换,然后按 Enter 键 (Windows) 或 Return 键 (Macintosh) 来提交表单。
所有组件都支持 FocusManager;您无需编写代码来调用它。FocusManager 也会与系统管理器进行交互,当激活或取消激活弹出窗口时,系统管理器会激活或取消激活 FocusManager 实例。每个模式窗口都有一个 FocusManager 实例,所以,该窗口中的组件就成为了它们自己的 Tab 集,这样就可以防止用户按 Tab 键切换到其他窗口中的组件。
FocusManager 可识别单选按钮组(这些按钮具有定义的 RadioButton.groupName
属性),并将焦点设置到该组中 selected
属性设置为 true
的实例。当按 Tab 键时,焦点管理器会查看下一个对象是否与当前对象具有相同的 groupName
。如果是这样,那么它会自动将焦点移动到下一个具有不同 groupName
的对象。其他支持 groupName
属性的组件组也可以使用这一功能。
FocusManager 会处理由鼠标单击而引起的焦点变化。如果用户单击一个组件,则该组件就被赋予焦点。
FocusManager 不会自动给应用程序中的组件指定焦点。除非您对组件调用 focusManager.setFocus
,否则默认情况下,主窗口和任何弹出窗口都不会在任何组件上设置焦点。