java - 具有 Nimbus 外观和感觉的自定义组件和 Painter

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

我正在创建一个继承自 NimbusLookAndFeel 的外观,让我知道如何注册我自己的组件以使用它们的自定义 Painter。

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

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

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

我想制作一个自定义组件,例如 MyCustomTabbedPane,它的风格化源自从 Nimbus 继承的外观和感觉。我可以注册自己的 UI 类吗?

我如何制作自己的 UI 类?这个类应该有哪些逻辑?

另一个问题,我如何分配此类 Painter,例如 MyCustomTabbedPanePainter 定义我自己的组件状态,Nimbus 也是如此,例如 BACKGROUND_ENABLED

感谢和问候!

最佳答案

  1. 首选方式,有几个Look and Feels based on Nimbus

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

  3. 最困难的方法,必须创建自己的 xml 文件(参见第 2 点。) 并覆盖 UIManager 的所有键,一个地方的所有内容都是 UIManager Defaults by @camickr

  4. 最简单的方法是仅覆盖 Primary Colors & Secondary Colors ,然后 Colors 被应用并且对大多数 JComponents

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

关于java - 具有 Nimbus 外观和感觉的自定义组件和 Painter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14503002/

相关文章:

java - 结果集中的 fetchsize 默认设置为 0

java - 您如何用 Java 写入磁盘(通过刷新)并保持性能?

java - Swing和AWT,为什么一个被认为是轻量级的,另一个被认为是重量级的?

java - 有没有办法限制JTextField的数值

java - 自定义 JComboBox 隐藏 JPopupMenu

delphi - 将 Delphi 7 属性编辑器转换为 Delphi XE2

java - wsimport - 两个声明导致冲突,给定同一行

java - 从 .eml 文件获取文本的最佳方法是什么?

java - 使用 setVisible(false) 打印 JFrame

delphi - 在 Delphi 中使用 TOwnedCollection 后代