public abstract class State<T extends JComponent> extends Object
代表Nimbus内置或定制的状态。
Synth提供了几个内置状态,它们是:
然而,还有更多的状态可以在LookAndFeel中描述,并且根据这些不同的状态对组件进行不同的样式组件是很好的。 例如,进度条可能是“不确定的”。 允许将其定义为“状态”是非常方便的。
这个类,国家,旨在用于这种情况。 简单地实现抽象#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(); } }
protected State(String name)
创建一个新的自定义状态。 指定状态的名称。 在为任何一个特定组件设置的状态中,该名称应该是唯一的。 状态的名称应与UIDefaults中使用的名称相符。
例如,以下是正确的:
defaults.put("Button.States", "Enabled, Foo, Disabled"); defaults.put("Button.Foo", new FooState("Foo"));
name
- 用于状态的简单用户友好名称,例如“Indeterminate”或“EmbeddedPanel”或“Blurred”。
习惯使用骆驼盒,首字母大写。
public String toString()
Object
toString
方法返回一个“textually代表”这个对象的字符串。
结果应该是一个简明扼要的表达,容易让人阅读。
建议所有子类覆盖此方法。
该toString
类方法Object
返回一个由其中的对象是一个实例,该符号字符`的类的名称的字符串@
”和对象的哈希码的无符号的十六进制表示。 换句话说,这个方法返回一个等于下列值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())
protected abstract boolean isInState(T c)
获取指定的JComponent是否处于由该类表示的自定义状态。 这是一个非常性能敏感的循环。 请采取适当的预防措施,以确保快速执行。
Nimbus使用此方法来帮助确定JComponent的状态。例如,JProgressBar可能存在一个自定义状态,以便在进度条true
时返回true。 这种方法的实现将是:
return c.isIndeterminate();
c
- JComponent进行测试。
这将永远不会为空。
c
is in the custom state represented by this
State
instance