Java更新UIManager默认并重新绘制组件

时间:2011-04-26 01:09:04

标签: 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()with没有成功。

谢谢

1 个答案:

答案 0 :(得分:3)

我相信当您将颜色添加到UIManager时,需要将其包装在ColorUIResource类中。这允许UIManager认为这些是默认LAF的一部分而不是自定义颜色,因此它会在您更新UI时重置值。

您仍然需要使用:

SwingUtilities.updateComponentTreeUI(...);

阅读Modifying the Look and Feel上Swing教程中的部分以获取更多信息。