Merlin的魔力: 核心,核心,还是核心[Java编程]
本文“Merlin的魔力: 核心,核心,还是核心[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
基于Swing的GUI还有一些遗留问题,包含若何管理核心(哪个组件有接纳键盘输入的优先权),若何判断哪个组件拥有核心,以及若何将核心从一个组件遍历到下一个组件.由于Swing成立在抽象窗口工具包(AWT)之上,对组件核心的管理便依靠于AWT中的底层核心管理.Java平台过去的版本依靠于本地的窗口管理器来帮忙举行核心管理,所以固然有些开辟者会认为核心掌握是在他们的利用程序内部举行的,而实际情形并非如此.由于对底层的本地核心系统的依靠性,因而呈现了很多平台不相容的现象.
至于Merlin,它为您供应了一个全新的、AWT级的核心子系统.这个子系统有其长处,也有其缺陷.这种新模子的动身点是成立一种可以跨平台工作的系统,它带有一个集合式的 KeyboardFocusManager ,用以管理活动的并且拥有核心的窗口,以及当前核心的属主.缺陷是,它与前面的版本之间存在一些不兼容性,从而招致有些程序在较新的版本中不能正常运行.作为一个开辟者,当您成立任何新程序时,您需求清楚新的核心遍历方法.
新的核心子系统相当大,在本期话题中,我们只关注此中的一项新特点―― FocusTraversalPolicy ――并向您展示若何管理单个容器中的核心遍历.要得到关于其他特点的信息,拜见 参考资料以链接到Sun的文档以及其他一些重要的指南.
什么,没有接口?
我们首先来看一下 FocusTraversalPolicy 类.是的,它 是一个类,而不是一个接口.不过,它是一个抽象类,因而需求被细分类.FocusTraversalPolicy 类可以掌握在一个特定的核心循环根中的核心遍历次序.核心循环根是一种容器,它的 focusCycleRoot 属性被设置为 true .在默许情形下,窗口和框架被设置为 true ,其他的容器则被设置为 false ,不过它们也可以被设置为 true .将属性设置为 true 意味着当核心来反转展转移时,这个核心将一向呆在核心循环根内的一个循环组件之中.
FocusTraversalPolicy 类由6个办法构成:
getDefaultComponent(Container focusCycleRoot)
getInitialComponent(Window window)
getComponentBefore(Container focusCycleRoot, Component aComponent)
getComponentAfter(Container focusCycleRoot, Component aComponent)
getFirstComponent(Container focusCycleRoot)
getLastComponent(Container focusCycleRoot)
全部这6个办法都返回一个 Component 对象.在这6个办法之中,有5个办法是抽象的,只有 getInitialComponent() 是具体的办法.
顾名思义, getDefaultComponent() 办法返回默许的组件,当相关的核心循环根得到核心的时刻,这个默许组件将得到核心.想象一下沿着某个容器举行核心切换以及将核心切换到那个容器里面的一个容器中的情形.这种情形叫做 向下核心循环(down focus cycle).当核心进入那个子容器时, getDefaultComponent() 需求返回应当得到核心的初始组件.
getInitialComponent() 办法返回当一个窗口第一次显示时应当得到核心的那个初始组件.在默许情形下,该办法只返回这个窗口的默许组件――即调用 getDefaultComponent() 办法时返回的后果.
getComponentBefore() 和 getComponentAfter() 办法是成对的.按照特定的核心循环根(比方容器)中的某个组件,这两个办法将返回该组件之前大概之后的一个组件.普通情形下,您通过按 Shift+Tab键反向移动到前一个组件,大概按 Tab键前向移动到下一个组件,但是,差别的环境大概答应利用差别的键序列来操纵键盘移动核心.普通情形下,这些办法中的代码都有一个大型的if-else语句块大概一个 Map 查找.
getFirstComponent() 和 getLastComponent() 办法也是成对的.固然在编写 getFirstComponent() 和 getLastComponent() 办法时,您应当在脑海里有第一/最后组件这样一个概念,但是初始组件未必就是第一组件,这些办法答应您显式地设置哪个组件是第一组件,哪个组件又是最后组件.
以上是“Merlin的魔力: 核心,核心,还是核心[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |