模块 java.desktop

包 javax.swing.plaf.nimbus


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

Nimbus 使用 Painter 接口的实例来绘制组件。对于每个 Swing 组件,它都关联一个前景和一个背景 Painter ,并且对于不同的组件状态可能有多个 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 设置,但仅适用于该特定组件实例。布尔类型的可选客户端属性“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 中的颜色源自 原色 的核心集。还有 二次色 ,它们是从原色派生出来的,但它们本身作为其他派生颜色的基色。派生机制允许运行时定制,即如果主色或辅助色发生变化,所有从中派生的颜色都会自动更新。 NimbusLookAndFeel.getDerivedColor(java.lang.String, float, float, float, int, boolean) 方法可用于创建派生颜色。

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

Note: 大多数 Swing API 都是 not 线程安全的。有关详细信息,请参阅 Swing 中的并发The Java Tutorial 中的一个部分。

自从:
1.7