Module  java.desktop

Package javax.swing.plaf.nimbus

提供根据跨平台Nimbus外观构建的用户界面对象。

Nimbus使用Painter接口的实例来绘制组件。 对于每个Swing组件,它将前景和后台Painter相关联,并且可能有几个画家用于不同的组件状态。

Nimbus允许通过更改UIDefaults表来定制其许多属性,包括画家。 以下是一个例子:

  UIManager.put("ProgressBar.tileWidth", myTileWidth);
 UIManager.put("ProgressBar[Enabled].backgroundPainter", myBgPainter);
 UIManager.put("ProgressBar[Enabled].foregroundPainter", myFgPainter); 

每个组件的定制也是可能的。 渲染组件时,Nimbus检查其名为“Nimbus.Overrides”的客户端属性。 该属性的值应为UIDefaults一个实例。 该表中的设置将覆盖UIManager设置,但仅适用于该特定组件实例。 类型为Boolean的可选客户端属性“Nimbus.Overrides.InheritDefaults”指定是否应将覆盖设置与默认设置合并( true )或替换它们( false )。 默认情况下,它们被合并:

  JProgressBar bar = new JProgressBar();
 UIDefaults overrides = new UIDefaults();
 overrides.put("ProgressBar.cycleTime", 330);
 ...
 bar.putClientProperty("Nimbus.Overrides", overrides);
 bar.putClientProperty("Nimbus.Overrides.InheritDefaults", false); 

Nimbus中的颜色来自primary colors的核心集。 还有secondary colors ,它们是从主要的派生而成,但它们可以作为其他派生颜色的基本颜色。 派生机制允许运行时定制,即如果主要或次要颜色被更改,则从其派生的所有颜色都会自动更新。 方法NimbusLookAndFeel.getDerivedColor(java.lang.String, float, float, float, int, boolean)可以用于创建派生颜色。

这些类被设计为在安装相应的LookAndFeel类时使用( UIManager.setLookAndFeel(new XXXLookAndFeel()) )。 在安装不同的LookAndFeel使用它们可能会产生意外的结果,包括异常。 另外,更改LookAndFeel维持UIManager而不更新相应的ComponentUI的任何JComponent s也可能产生意想不到的结果,如出现错误的颜色,并且一般不鼓励。

注意:大多数Swing API 不是线程安全的。 有关详细信息,请参阅Concurrency in Swing ,在一节The Java Tutorial

从以下版本开始:
1.7