将nimbus私有类`DerivedColor`解码为正确的ARGB值

时间:2012-02-23 22:34:49

标签: swing nimbus

我正在开发适合Nimbus外观和感觉的定制组件。我遇到了颜色默认值的问题,与Java 1.6中的"nimbusBlueGrey"一样,返回com.sun.java.swing.plaf.nimbus.DerivedColor的实例。

由于这是一个私有类,无论如何都会在Java 7中进行更改,我需要将其视为java.awt.Color的实例。但是当我尝试混合颜色时,例如调整色调,饱和度和亮度,这些邪恶的对象返回错误的RGB颜色。 toString输出表明存在此问题:

DerivedColor(color=50,50,50 parent=nimbusBase offsets=0.03245944,-0.525188,0.196078,0)

所以我希望能够将其视为ARGB 0xffa9b0be这是正确的(参见Nimbus Defaults) - 但我从getRGB获得的是无用{{1} }}

1 个答案:

答案 0 :(得分:0)

当Nimbus 不是当前的外观时会出现问题。似乎DerivedColor查找当前的外观,然后无法解码父颜色。

因此,解决方案是在未设置Nimbus的情况下使用默认颜色的副本。