- java.lang.Object
-
- javax.swing.plaf.synth.SynthStyle
-
- javax.swing.plaf.nimbus.NimbusStyle
-
public final class NimbusStyle extends SynthStyle
Nimbus使用的SynthStyle实现。 已在NimbusLookAndFeel中注册的每个区域都将具有关联的NimbusStyle。 因此,使用NimbusLookAndFeel注册的第三方组件将从#getStyle(JComponent,Region)方法的外观中传递NimbusStyle。
该类根据标准的Nimbus命名约定正确读取和检索UIDefaults中的值。 它将创建和检索存储在那里的画家,字体,颜色和其他数据。
NimbusStyle还支持基于每个组件覆盖设置的功能。 NimbusStyle检查组件的客户端属性映射“Nimbus.Overrides”。 如果与此键关联的值是UIDefaults的实例,则该defaults表中的值将覆盖UIManager中的标准Nimbus默认值,但仅限于该组件实例。
(可选)您可以指定客户端属性“Nimbus.Overrides.InheritDefaults”。 如果为true,则此客户端属性指示应首先读取位于UIManager中的默认值,然后替换为位于组件客户端属性中的默认值。 如果为false,则仅使用组件客户端属性映射中的缺省值。 如果未指定,则假定为真。
您必须为“Nimbus.Overrides.InheritDefaults”指定“Nimbus.Overrides”才能生效。 “Nimbus.Overrides”表示是否存在任何覆盖,而“Nimbus.Overrides.InheritDefaults”表示是否应首先使用UIManager的默认值初始化这些覆盖。
只要为“Nimbus.Overrides”或“Nimbus.Overrides.InheritDefaults”的组件触发属性更改事件,就会重新加载NimbusStyle。 因此,例如,在组件上设置新的UIDefaults将导致重新加载样式。
这些值只从UIManager读出一次,然后缓存。 如果您需要再次读出的值(例如,如果用户界面是被重新加载),则丢弃该NimbusStyle和读取NimbusLookAndFeel使用NimbusLookAndFeel.getStyle一个新的。
此类中第三方组件作者感兴趣的主要API是检索画家的三种方法:#getBackgroundPainter,#getForegroundPainter和#getBorderPainter。
NimbusStyle允许您指定自定义状态或修改状态顺序。 Synth(以及Nimbus)具有“状态”的概念。 例如,JButton可能处于“MOUSE_OVER”状态,或“ENABLED”状态,或“DISABLED”状态。 这些都是在synth中定义的“标准”状态,适用于所有合成区域。
但是,有时您需要具有自定义状态。 例如,如果JButton的父级是JToolbar,那么你希望JButton以不同的方式呈现。 在Nimbus中,您可以通过在UIDefaults中包含特殊键来指定这些自定义状态。 以下UIDefaults条目为此按钮定义了三种状态:
JButton.States = Enabled, Disabled, Toolbar JButton[Enabled].backgroundPainter = somePainter JButton[Disabled].background = BLUE JButton[Toolbar].backgroundPainter = someOtherPaint
如您所见,
JButton.States
条目列出了JButton样式将支持的状态。 然后,您可以指定每个州的设置。 如果未指定JButton.States
条目,则将采用标准Synth状态。 如果指定条目但状态列表为空或为null,则将假定标准合成器状态。
-
-
字段汇总
字段 变量和类型 字段 描述 static String
LARGE_KEY
大钥匙static double
LARGE_SCALE
规模大static String
MINI_KEY
迷你钥匙static double
MINI_SCALE
小规模static String
SMALL_KEY
小钥匙static double
SMALL_SCALE
规模小
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 Object
get(SynthContext ctx, Object key)
Getter为区域特定的样式属性。Painter<Object>
getBackgroundPainter(SynthContext ctx)
获取适当的背景Painter(如果有),用于给定SynthContext中指定的状态。Painter<Object>
getBorderPainter(SynthContext ctx)
获取适当的边框Painter(如果有),用于给定SynthContext中指定的状态。protected Color
getColorForState(SynthContext ctx, ColorType type)
返回指定状态的颜色。protected Font
getFontForState(SynthContext ctx)
返回指定状态的字体。Painter<Object>
getForegroundPainter(SynthContext ctx)
获取适当的前景Painter(如果有),用于给定SynthContext中指定的状态。Insets
getInsets(SynthContext ctx, Insets in)
返回用于计算大小调整信息的Insets。SynthPainter
getPainter(SynthContext ctx)
返回将用于绘画的SynthPainter
。void
installDefaults(SynthContext ctx)
在JComponent
从context
安装此样式的必要状态。boolean
isOpaque(SynthContext ctx)
如果区域不透明,则返回true。-
声明方法的类 javax.swing.plaf.synth.SynthStyle
getBoolean, getColor, getFont, getGraphicsUtils, getIcon, getInt, getString, uninstallDefaults
-
-
-
-
方法详细信息
-
installDefaults
public void installDefaults(SynthContext ctx)
在JComponent
从context
安装此样式的必要状态。 如有必要,重写以使此样式使用来自UIDefaults的数据填充自身。- 重写:
-
installDefaults
在课程SynthStyle
- 参数
-
ctx
- SynthContext标识要安装属性的组件。
-
getInsets
public Insets getInsets(SynthContext ctx, Insets in)
返回用于计算大小调整信息的Insets。 如有必要,重写以使此样式使用来自UIDefaults的数据填充自身。- 重写:
-
getInsets
在类SynthStyle
- 参数
-
ctx
- 标识请求者的SynthContext -
in
- 用于放置返回值的in
。 - 结果
- 调整插入大小。
-
getColorForState
protected Color getColorForState(SynthContext ctx, ColorType type)
返回指定状态的颜色。 这不应该调用JComponent
上的任何方法。如有必要,重写以使此样式使用来自UIDefaults的数据填充自身。
此外,NimbusStyle处理ColorTypes与Synth略有不同。
- ColorType.BACKGROUND将等同于存储在名为“background”的UIDefaults中的颜色。
- ColorType.TEXT_BACKGROUND将等同于存储在名为“textBackground”的UIDefaults中的颜色。
- ColorType.FOREGROUND将等同于存储在名为“textForeground”的UIDefaults中的颜色。
- ColorType.TEXT_FOREGROUND将等同于存储在名为“textForeground”的UIDefaults中的颜色。
- Specified by:
-
getColorForState
在课堂上SynthStyle
- 参数
-
ctx
- 标识请求者的SynthContext -
type
- 请求的颜色类型。 - 结果
- 要渲染的颜色
-
getFontForState
protected Font getFontForState(SynthContext ctx)
返回指定状态的字体。 这不应该调用JComponent
上的任何方法。 如有必要,重写以使此样式使用来自UIDefaults的数据填充自身。 如果在UIDefaults中找不到名为“font”的值,则将返回UIDefaults中的“defaultFont”字体。- Specified by:
-
getFontForState
类SynthStyle
- 参数
-
ctx
- 标识请求者的SynthContext - 结果
- 用于渲染的字体
-
getPainter
public SynthPainter getPainter(SynthContext ctx)
返回将用于绘画的SynthPainter
。 这可能会返回null。 返回此样式的SynthPainter,最终委托给以此样式安装的Painters。- 重写:
-
getPainter
类SynthStyle
- 参数
-
ctx
- 标识请求者的SynthContext - 结果
- SynthPainter使用
-
isOpaque
public boolean isOpaque(SynthContext ctx)
如果区域不透明,则返回true。 如有必要,重写以使此样式使用来自UIDefaults的数据填充自身。 如果未在UI默认值中指定不透明度,则默认为非不透明。- 重写:
-
isOpaque
在课堂上SynthStyle
- 参数
-
ctx
- 标识请求者的SynthContext - 结果
- 如果区域不透明,则为true。
-
get
public Object get(SynthContext ctx, Object key)
Getter为区域特定的样式属性。如有必要,重写以使此样式使用来自UIDefaults的数据填充自身。
UIDefaults中的属性可以链式方式指定。 例如:
background Button.opacity Button.Enabled.foreground Button.Enabled+Selected.background
在此示例中,假设您处于Enabled + Selected状态并搜索“foreground”。 在这种情况下,我们首先检查Button.Enabled + Selected.foreground,但不存在这样的颜色。 然后我们回到下一个有效状态,在本例中为Button.Enabled.foreground,并且匹配。 所以我们归还它。
同样,如果我们处于Enabled状态并查找“background”,我们将无法在Button.Enabled或Button中找到它,但会在UIManager的顶层找到它。 所以我们返回那个价值。
一个特别注意:传递给此方法的“键”可以是“background”或“Button.background”形式,其中“Button”等于传递给NimbusStyle构造函数的前缀。 在任何一种情况下,它都会寻找“背景”。
- 重写:
-
get
类SynthStyle
- 参数
-
ctx
- 标识请求者的SynthContext -
key
- 不得为null - 结果
- 命名属性的值
-
getBackgroundPainter
public Painter<Object> getBackgroundPainter(SynthContext ctx)
获取适当的背景Painter(如果有),用于给定SynthContext中指定的状态。 此方法执行适当的回退搜索,如#get中所述。- 参数
-
ctx
- SynthContext。 不能为空。 - 结果
- 与给定状态关联的背景画家,如果找不到,则为null。
-
getForegroundPainter
public Painter<Object> getForegroundPainter(SynthContext ctx)
获取适当的前景Painter(如果有),用于给定SynthContext中指定的状态。 此方法执行适当的回退搜索,如#get中所述。- 参数
-
ctx
- SynthContext。 不能为空。 - 结果
- 与给定状态关联的前景画家,如果找不到则为null。
-
getBorderPainter
public Painter<Object> getBorderPainter(SynthContext ctx)
获取适当的边框Painter(如果有),用于给定SynthContext中指定的状态。 此方法执行适当的回退搜索,如#get中所述。- 参数
-
ctx
- SynthContext。 不能为空。 - 结果
- 与给定状态关联的边框画家,如果找不到,则为null。
-
-