Module java.desktop

Package javax.swing.plaf.nimbus


package javax.swing.plaf.nimbus
提供根据跨平台Nimbus外观构建的用户界面对象。

Nimbus使用Painter接口的实例来绘制组件。对于每个Swing组件,它关联一个前景和一个背景Painter,并且可能有多个用于不同组件状态的painter。

Nimbus允许通过修改UIDefaults表来自定义许多属性,包括painters。以下是一个示例:

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

也可以进行每个组件的定制。在渲染组件时,Nimbus会检查其名为"Nimbus.Overrides"的客户端属性。该属性的值应该是UIDefaults的一个实例。该表中的设置会覆盖UIManager的设置,但仅适用于该特定组件实例。一个名为"Nimbus.Overrides.InheritDefaults"的可选客户端属性,类型为Boolean,指定覆盖设置是否应与默认设置合并(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中的颜色是从一组主要颜色派生的。还有次要颜色,它们是从主要颜色派生的,但本身作为其他派生颜色的基色。派生机制允许运行时定制,即如果更改了主要或次要颜色,则从中派生的所有颜色都会自动更新。方法NimbusLookAndFeel.getDerivedColor(java.lang.String, float, float, float, int, boolean)可用于创建派生颜色。

这些类设计用于在安装相应的LookAndFeel类时使用(UIManager.setLookAndFeel(new XXXLookAndFeel()))。在安装不同的LookAndFeel时使用它们可能会产生意外结果,包括异常。此外,更改UIManager维护的LookAndFeel而不更新任何JComponent的相应ComponentUI也可能产生意外结果,例如显示错误的颜色,并且通常不鼓励这样做。

注意:大多数Swing API都是线程安全的。详情请参阅Swing中的并发性,这是Java教程中的一节。

自版本:
1.7