java.lang.Object
javax.swing.plaf.nimbus.State<T>
- 类型参数:
-
T
- 要查询状态的组件类型
表示Nimbus中的内置或自定义状态。
Synth提供了几种内置状态,包括:
- 启用
- 鼠标悬停
- 按下
- 禁用
- 焦点
- 选定
- 默认
然而,还有许多其他状态可以在LookAndFeel中描述,根据这些不同的状态来为组件设置不同的样式会很好。例如,进度条可以是“不定”。允许将其定义为“状态”将非常方便。
这个类,State,旨在用于这种情况。只需实现抽象的#isInState方法。如果给定的JComponent处于“此状态”,则返回true,否则返回false。这个方法将在“性能敏感的循环”中被调用许多次。它必须执行非常快速。
例如,以下可能是为JProgressBars实现自定义“不定”状态的示例:
public final class IndeterminateState extends State<JProgressBar> {
public IndeterminateState() {
super("Indeterminate");
}
@Override
protected boolean isInState(JProgressBar c) {
return c.isIndeterminate();
}
}
-
Constructor Summary
-
Method Summary
-
Constructor Details
-
State
创建一个新的自定义状态。指定状态的名称。状态的名称应在为任何一个特定组件设置的状态集中是唯一的。状态的名称应与UIDefaults中使用的名称相符。
例如,以下是正确的:
defaults.put("Button.States", "Enabled, Foo, Disabled"); defaults.put("Button.Foo", new FooState("Foo"));
- 参数:
-
name
- 状态的简单用户友好名称,例如“不定”或“EmbeddedPanel”或“模糊”。习惯上使用驼峰命名法,首字母大写。
-
-
Method Details
-
isInState
获取指定的JComponent是否处于此类表示的自定义状态。这是一个极其性能敏感的循环。请采取适当的预防措施,确保它执行迅速。
Nimbus使用此方法来帮助确定JComponent处于什么状态。例如,为JProgressBar存在一个自定义State,当进度条是不定时它将返回
true
。这种方法的实现将简单地是:return c.isIndeterminate();
- 参数:
-
c
- 要测试的JComponent。永远不会为null。 - 返回:
-
如果
c
处于此State
实例表示的自定义状态,则返回true
-