public final class NimbusStyle extends SynthStyle
Nimbus使用的SynthStyle实现。 已经在NimbusLookAndFeel注册的每个区域都将有一个相关联的NimbusStyle。 因此,NimbusLookAndFeel注册的第三方组件将从#getStyle(JComponent,Region)方法的外观和感觉传递一个NimbusStyle。
该类根据标准Nimbus命名约定正确读取和检索UIDefaults中的值。 它将创建和检索画笔,字体,颜色和存储在其中的其他数据。
NimbusStyle还支持在每个组件的基础上覆盖设置的功能。 NimbusStyle检查组件的客户端属性映射“Nimbus.Overrides”。 如果与此密钥相关联的值是UIDefaults的实例,则该默认值中的值将覆盖UIManager中的标准Nimbus默认值,但仅覆盖该组件实例。
或者,您可以指定客户端属性“Nimbus.Overrides.InheritDefaults”。 如果为true,则该客户端属性指示应首先读取位于UIManager中的默认值,然后替换为组件客户端属性中的默认值。 如果为false,则仅使用组件客户端属性映射中的默认值。 如果未指定,则假定为true。
您必须为“Nimbus.Overrides.InheritDefaults”指定“Nimbus.Overrides”才能有效果。 “Nimbus.Overrides”指示是否有任何覆盖,而“Nimbus.Overrides.InheritDefaults”表示是否应该首先使用UIManager的默认值初始化这些替代。
每当为“Nimbus.Overrides”或“Nimbus.Overrides.InheritDefaults”的组件触发属性更改事件时,NimbusStyle将重新加载。 因此,例如,在组件上设置新的UIDefaults将导致重新加载样式。
这些值只能从UIManager读出一次,然后缓存。 如果您需要再次读取值(例如,如果UI正在重新加载),请抛弃NimbusStyle,并使用NimbusLookAndFeel.getStyle从NimbusLookAndFeel中读取一个新的值。
第三方组件作者在此类中感兴趣的主要API是三种检索画家的方法:#getBackgroundPainter,#getForegroundPainter和#getBorderPainter。
NimbusStyle允许您指定自定义状态,或修改状态顺序。 Synth(因此Nimbus)具有“状态”的概念。 例如,JButton可能处于“MOUSE_OVER”状态或“ENABLED”状态或“DISABLED”状态。 这些都是在合成器中定义的所有“标准”状态,适用于所有合成区域。
有时候,您需要有自定义状态。 例如,如果父节点是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状态。 如果指定条目,但状态列表为空或为空,则将假定标准合成状态。 
| Modifier and Type | Field and Description | 
|---|---|
| static String | LARGE_KEY | 
| static double | LARGE_SCALE | 
| static String | MINI_KEY | 
| static double | MINI_SCALE | 
| static String | SMALL_KEY | 
| static double | SMALL_SCALE | 
| Modifier and Type | Method and Description | 
|---|---|
| Object | get(SynthContext ctx, Object key)
              Getter为区域特定样式属性。 
             | 
| Painter | getBackgroundPainter(SynthContext ctx)
              获取适当的背景Painter,如果有的话,给定SynthContext中指定的状态。 
             | 
| Painter | getBorderPainter(SynthContext ctx)
              获取适当的边界Painter,如果有的话,给定SynthContext中指定的状态。 
             | 
| protected Color | getColorForState(SynthContext ctx, ColorType type)
              返回指定状态的颜色。 
             | 
| protected Font | getFontForState(SynthContext ctx)
              返回指定状态的字体。 
             | 
| Painter | 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。 
             | 
getBoolean, getColor, getFont, getGraphicsUtils, getIcon, getInt, getString, uninstallDefaultspublic static final String LARGE_KEY
public static final String SMALL_KEY
public static final String MINI_KEY
public static final double LARGE_SCALE
public static final double SMALL_SCALE
public static final double MINI_SCALE
public void installDefaults(SynthContext ctx)
JComponent从context从此样式安装必要的状态。 
           如果需要,覆盖以使此样式填充来自UIDefaults的数据。 
          installDefaults在 
            SynthStyle类 
           ctx - SynthContext识别组件来安装属性。 
           public Insets getInsets(SynthContext ctx, Insets in)
getInsets在 
            SynthStyle 
           ctx - SynthContext识别请求者 
           in - 
            in返回值的 
            in 。 
           protected Color getColorForState(SynthContext ctx, ColorType type)
JComponent上的任何方法。 
           如果需要,覆盖以使此样式填充来自UIDefaults的数据。
此外,NimbusStyle处理ColorTypes与Synth略有不同。
getColorForState在 
            SynthStyle 
           ctx - SynthContext识别请求者 
           type - 
            type的颜色类型。 
           protected Font getFontForState(SynthContext ctx)
JComponent上的任何方法。 
           如果需要,覆盖以使此样式填充来自UIDefaults的数据。 
           如果在UIDefaults中找不到名为“font”的值,则会返回UIDefaults中的“defaultFont”字体。 
          getFontForState在 
            SynthStyle 
           ctx - SynthContext识别请求者 
           public SynthPainter getPainter(SynthContext ctx)
SynthPainter 。 
           这可能返回null。 
           返回此样式的SynthPainter,该结果最终委托给以此样式安装的Painters。 
          getPainter在 
            SynthStyle类 
           ctx - SynthContext识别请求者 
           public boolean isOpaque(SynthContext ctx)
isOpaque在 
            SynthStyle 
           ctx - SynthContext识别请求者 
           public Object get(SynthContext ctx, Object key)
如果需要,覆盖以使此样式填充来自UIDefaults的数据。
UIDefaults中的属性可以以链接方式指定。 例如:
  background
 Button.opacity
 Button.Enabled.foreground
 Button.Enabled+Selected.background  
           在这个例子中,假设你处于Enabled + Selected状态并搜索“foreground”。 在这种情况下,我们首先检查Button.Enabled + Selected.foreground,但不存在这样的颜色。 然后我们回到下一个有效状态,在这种情况下,Button.Enabled.foreground,并且有一个匹配。 所以我们回来了
再次,如果我们处于启用状态并查找“背景”,我们将不会在Button.Enabled或Button中找到它,而是在UIManager的顶层。 所以我们返回这个价值。
一个特别的注意事项:传递给此方法的“键”可以是“背景”或“Button.background”的形式,其中“Button”等于传递给NimbusStyle构造函数的前缀。 在任何一种情况下,它都会寻找“背景”。
get在类 
            SynthStyle 
           ctx - 
           key - 不能为空 
           public Painter getBackgroundPainter(SynthContext ctx)
ctx - SynthContext。 
            不能为空。 
           public Painter getForegroundPainter(SynthContext ctx)
ctx - SynthContext。 
            不能为空。 
           public Painter getBorderPainter(SynthContext ctx)
ctx - SynthContext。 
            不能为空。 
            Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.