关于 FocusManager 类

您可以使用 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,否则默认情况下,主窗口和任何弹出窗口都不会在任何组件上设置焦点。