我正在使用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()with没有成功。
谢谢
答案 0 :(得分:3)
我相信当您将颜色添加到UIManager时,需要将其包装在ColorUIResource类中。这允许UIManager认为这些是默认LAF的一部分而不是自定义颜色,因此它会在您更新UI时重置值。
您仍然需要使用:
SwingUtilities.updateComponentTreeUI(...);
阅读Modifying the Look and Feel上Swing教程中的部分以获取更多信息。