模块  java.desktop

Class State<T extends JComponent>


  • public abstract class State<T extends JComponent>extends Object

    表示Nimbus中的内置或自定义状态。

    Synth提供了几种内置状态,它们是:

    • 启用
    • 鼠标移到
    • 追问
    • 重点
    • 默认

    但是,可以在LookAndFeel中描述更多的状态,并且根据这些不同的状态对组件进行不同的样式设置会很不错。 例如,进度条可能是“不确定的”。 允许将其定义为“状态”将非常方便。

    这个类State是用于这种情况的。 只需实现抽象的#isInState方法。 如果给定的JComponent“处于此状态”,则返回true,否则返回false。 该方法将被称为性能敏感的循环 多次 它必须非常快速地执行。

    例如,以下可能是JProgressBars的自定义“Indeterminate”状态的实现:

       public final class IndeterminateState extends State<JProgressBar> { public IndeterminateState() { super("Indeterminate"); } @Override protected boolean isInState(JProgressBar c) { return c.isIndeterminate(); } }  
    • 构造方法详细信息

      • State

        protected State​(String name)

        创建一个新的自定义状态。 指定状态的名称。 在为任何一个特定组件设置的状态中,名称应该是唯一的。 状态名称应与UIDefaults中使用的名称一致。

        例如,以下内容是正确的:

           defaults.put("Button.States", "Enabled, Foo, Disabled"); defaults.put("Button.Foo", new FooState("Foo"));  
        参数
        name - 状态的简单用户友好名称,例如“Indeterminate”或“EmbeddedPanel”或“Blurred”。 通常使用驼峰案例,首字母大写。
    • 方法详细信息

      • isInState

        protected abstract boolean isInState​(T c)

        获取指定的JComponent是否处于此类所表示的自定义状态。 这是一个性能极其敏感的循环。 请采取适当的预防措施,以确保快速执行。

        Nimbus使用此方法来帮助确定JComponent所处的状态。例如,JProgressBar可以存在自定义状态, true当进度条不确定时它将返回true 这种方法的实现只是:

           return c.isIndeterminate(); 
        参数
        c - 要测试的JComponent。 这永远不会为空。
        结果
        如果 c处于此 State实例所表示的自定义状态, State