Java 更新 UIManager 默认值并重绘组件
我正在使用 UIManager 自定义一些 swing 组件,如下例所示,
UIManager.put("TextField.background", COLOR_BG);
UIManager.put("TextField.foreground", COLOR_FG);
UIManager.put("TextField.selectionBackground", COLOR_SB);
UIManager.put("TextField.selectionForeground", COLOR_SF);
UIManager.put("TextField.caretForeground", COLOR_CF);
现在应用程序启动后我想更改一些颜色,所以我再次调用 UIManager.put 来更新 UIManager,但组件没有被更新,我尝试过repaint()、revalidate()、updateUI() 均未成功。
谢谢
I'm using UIManager to customize some swing components like the example below,
UIManager.put("TextField.background", COLOR_BG);
UIManager.put("TextField.foreground", COLOR_FG);
UIManager.put("TextField.selectionBackground", COLOR_SB);
UIManager.put("TextField.selectionForeground", COLOR_SF);
UIManager.put("TextField.caretForeground", COLOR_CF);
Now after the application starts I want to change some colors, so I call UIManager.put again to update the UIManager, but the components aren't being updated, I tried repaint(), revalidate(), updateUI() with no success.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我相信当您将颜色添加到 UIManager 时,您需要将其包装在 ColorUIResource 类中。这使得 UIManager 认为这些是默认 LAF 的一部分,而不是自定义颜色,因此当您更新 UI 时它会重置这些值。
您仍然需要使用:
阅读 Swing 教程中有关 修改外观和感觉了解更多信息。
I believe when you add your colors to the UIManager you need to wrap then in a ColorUIResource class. This allows the UIManager to think these are part of the default LAF and not a custom color so it will reset the values when you update the UI.
You will still need to use:
Read the section from the Swing tutorial on Modifying the Look and Feel for more information.