- java.lang.Object
-
- javax.swing.plaf.nimbus.State<T>
-
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
-
-