【问题标题】:Custom Components and Painter with Nimbus Look And feel具有 Nimbus 外观的自定义组件和 Painter
【发布时间】:2013-01-24 13:54:33
【问题描述】:

我正在创建一个继承自 NimbusLookAndFeel 的外观,并告诉我如何注册我自己的组件以使用他们的自定义 Painter。

例如,像这样的ButtonPainter 类的JButton 曾经被绘制。也想知道如何注册不同的状态(例如BACKGROUND_ENABLEDBACKGROUND_FOCUSED ...)

您能指导我如何做到这一点吗?其实我想做的是一个自定义的选项卡式窗格,并且使用他们自己的 Painter。

编辑:嗯,我想我没有解释清楚。

我想制作一个自定义组件,例如MyCustomTabbedPane,这个风格化了继承自 Nimbus 的外观。我可以注册自己的 UI 类,例如 MyCustomTabbedPaneUI 制作 uiDefault.put("MyCustomTabbedPaneUI", new MyCustomTabbedPaneUI())

我如何制作自己的 UI 类,这个类应该有什么逻辑?

还有一个问题,我如何分配这个类 Painter,例如 MyCustomTabbedPanePainter 定义我自己的组件状态,就像 Nimbus 一样,例如 BACKGROUND_ENABLED

感谢和问候!

【问题讨论】:

  • 1) JTabbedPane 由@aephyr 在代码中解决,此代码构造尽可能简单,2) 创建一个实现所有必需方法的类并将其直接放入 UIManager,3) Painter 是方法填充背景(例如),这个类可以只为整个应用程序编写一次,并为方法或属性使用重载,可能比这个论坛上的示例更长,但整个类或JVM只有一个类,e.i.

标签: java swing custom-component look-and-feel nimbus


【解决方案1】:
  1. 首选方式,有几个Look and Feels based on Nimbus

  2. 另一种选择,自定义Nimbus Look and Feel 有一些自定义解决方法,其中最复杂的是NimbusThemeCreator by @aephyr(Java6 的导入???)

  3. 最难的方法,必须创建 own xml file (see point 2nd.) 并覆盖 all keys for UIManager,所有内容都在一个地方是 UIManager Defaults by @camickr

  4. 最简单的方法是仅覆盖Primary Colors & Secondary Colors,然后Colors 适用于大部分JComponents 并有效

  5. RenderersHighlighter 是单独的问题,必须决定是使用标准键还是覆盖此键,例如首选 XxxRenderer,如果您覆盖 Nimbus UIDefaultsRenderer对于具体的JComponent,则Colors 取自Renderer 而不是UIDefaults

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    相关资源
    最近更新 更多