2011-04-26 72 views
1

我使用UIManager的自订一些摆动部件,如下面的例子中,的Java更新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()没有成功。

感谢

回答

2

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

您仍然需要使用:

SwingUtilities.updateComponentTreeUI(...); 

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

+0

嗨,这工作得很好。谢谢 – Rias 2011-04-26 02:55:27

+0

你有一个很大的吻从我@camickr :) – 2016-07-23 17:03:58