技术开发 频道

Java2的新焦点子系统

         FocusTraversalPolicy 类定义了组件遍历的顺序。该类应该提供不同的方法分别确定前一个、后一个、第一个、最后一个组件及缺省组件。它负责调遣关键事件、焦点事件和焦点相关的窗口事件。 Java.awt.FocusTraversalPolicy 是所有遍历策略类的抽象类。它有下列必需的方法,这些方法可以由子类覆盖:

  getComponentAfter()

  getComponentBefore()

  getDefaultComponent()

  getFirstComponent()

  getLastComponent()

  AWT 提供了非抽象的 ContainerOrderFocusTraversalPolicy ,它的方法返回的只是可见、可显示、可启用和可定焦的组件。 DefaultFocusTraversalPolicy 是 ContainerOrderFocusTraversalPolicy 的子类。它永远不会返回带有非可定焦同类事物的组件,而且,它还是所有 AWT 容器( Panel 、 Window 和 ScrollPane )的缺省策略类。Swing 提供了一个有趣的附加策略,即 LayoutFocusTraversalPolicy ,它按组件的几何属性对组件进行排序,形成行和列。

  请注意,创建您自己的焦点遍历策略是一项复杂的任务。与其从头开始设计策略,我建议您倒不如用现有的缺省策略(它应该可以满足大部分需求)、同时覆盖一些方法来适应您的特定需求。在设计 Merlin 的这个新的焦点策略类时我们就已经想到这一点了。

  如果您一直在用 Swing 的 DefaultFocusManager 类,正如 API 文档中强烈推荐的,您应该改用新的 Merlin FocusTraversalPolicy 了。(关于该文档的链接,请参阅 参考资料)。

0
相关文章