我正在使用UIManager定制一些摇摆组件,例如下面的示例,

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()没有成功。

谢谢

最佳答案

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

您仍然需要使用:

SwingUtilities.updateComponentTreeUI(...);


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

关于java - Java更新UIManager默认值并重新绘制组件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5784902/

10-09 07:07