简化的ComponentUI

时间:2015-12-14 16:44:56

标签: java swing look-and-feel uimanager

我正在开发一个UI。我想增加在两个明确定义的外观(laf)之间进行选择的可能性,并有可能在将来扩展这个选择。我不打算支持任何外观,但我也不想修复给定的可定制laf(我必须支持的lafs之一是标准的windows)。 我的大多数UI都使用标准的swing组件,但是有少量特定于应用程序的UI组件没有意义来概括。它们是JComponent的直接子类。然而,他们必须改变他们的颜色,也许在改变laf时可能会改变其他一些小细节。 JComponent的默认颜色不太适合。我读了最后一天关于UIManager和ComponentUI的文章。为每个组件和外观创建一个自己的ComponentUI可能会起作用,但考虑到我的自定义组件缺乏通用性,以及我计划的lafs之间的微小差异,似乎很复杂。

我想要的是一个更简单的方案,我想大致就是这样(我是lafs的初学者):

  • 使用UIManager.put将一些键/值对集中添加到UIManager,例如" MyCustomComponent.background"," MyCustomComponent.foreground1"," MyCustomComponent.foreground2"等等,所有定义的颜色,字体和类似。有效地简单地使用某些颜色定义扩展给定的laf,但不使用ComponentUI扩展。
  • 每当laf更改时,我的自定义组件中的某些函数会被调用,我可以在那里获得颜色/字体。
  • 如果我的未来我太懒了,我想在某处定义默认颜色。更好的是,我想从其他JComponents中加工颜色,例如来自JTextArea的默认背景,即使我的自定义组件与JTextArea没有直接关系(恰好总是有适合的背景颜色)。

我如何以及在何处实施此类计划?像这样的东西必须以某种方式工作,但我找不到位于硬编码颜色(myComponent.setBackground)和开发自己的ComponentUI层次结构之间的任何教程。任何帮助表示赞赏!

0 个答案:

没有答案