LookAndFeel独立的颜色键参考

pdi*_*lag 13 java swing look-and-feel

我目前正在为我正在工作的公司的产品开发一组自定义控件.为此,我扩展了很多Swing控件并且还覆盖了很多paint方法.

为了保持一致的配色方案,我收到了我的颜色paint,setBackground使用方法等UIManager.getColor.

这是完全没问题的,直到我们注意到Nimbus LookAndFeel与当前的JRE版本一起使用时,使用了完全不同的颜色键,因此许多东西看起来完全不合适.

例如,虽然所有其他股票LookAndFeels(金属,Windows经典,Windows,CDE/Motif,GTK)已将关键字"文本"定义为文本的明亮背景,而"textText"则定义为相应的前景色,而" Nimbus "中的"文本"实际上是黑色前景色,并且似乎不存在标准文本背景色.

"TextField.background"可以工作,但是,例如,Windows LookAndFeels不存在.

我想你现在已经解决了这个问题.我不想为每个LAF维护一组颜色键,谁知道未来将添加哪些LAF以及我的公司可能决定使用哪些.

当然,一个简单的解决方案是摆脱Nimbus,但可以理解的是我的老板根本不喜欢这个想法,除了Nimbus现在是JRE的一部分,应该得到支持.

所以我想知道是否有任何标准化的方法来获得依赖于LAF的颜色,例如"文本背景/前景","选择文本bg/fg"等等?

Pet*_*ego 2

没有办法解决这个问题 - 您必须为颜色名称(以及可能的其他属性名称)创建自己的抽象层。

基本上,您有使用自己的颜色名称的库存 LookAndFeels(Metal、Windows Classic、Windows、CDE/Motif、GTK)和使用不同名称的 Nimbus。

创建一个类,例如LafProperties,以便为每个属性/颜色提供方法(例如“getTextColor”)。此类返回经典 Laf 样式的属性。然后为 Nimbus 扩展此类,并仅更改 Nimbus 中不同的方法。

如果普通 Lafs 和 Nimbus 的大多数属性的名称不同,那么您可以使用一个接口和两个实现类。