模块 java.desktop

类 State<T extends JComponent >

java.lang.Object
javax.swing.plaf.nimbus.State<T>
类型参数:
T - 要查询其状态的组件类型

public abstract class State<T extends JComponent > extends Object

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

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

  • Enabled
  • 鼠标移到
  • 按下
  • 残疾人
  • 专注
  • 已选
  • 默认

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

State 类旨在用于此类情况。简单地实现抽象的#isInState 方法。如果给定的 JComponent “处于此状态”,则返回 true,否则返回 false。此方法将在 performance sensitive loops 中被调用 many 次。它必须执行得非常快。

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


   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 是否处于此类表示的自定义状态。 This is an extremely performance sensitive loop. 请采取适当的预防措施以确保其快速执行。

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

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