2012-09-19 33 views
1

你好,我正在嘗試改變我在Java中的揮杆進度條的顏色。 起初我嘗試使用下面的代碼:覆蓋LookAndFeel

UIManager.put("ProgressBar.selectionBackground", Color.black); 
UIManager.put("ProgressBar.selectionForeground", Color.white); 
UIManager.put("ProgressBar.background", Color.white); 
UIManager.put("ProgressBar.foreground", Color.RED); 
m_progressBar.setBackground(Color.BLACK); 
m_progressBar.setForeground(Color.red); 

但任何命令,似乎有什麼影響! 除非我設置m_progressBar.stringPainted(true)然後前景確實會改變。

任何我知道問題來自以下命令:UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 在UI初始化之前被調用。

所以我的問題是:
1)出於好奇:爲什麼stringPainted(true)調用管理覆蓋前臺UI設置?
2)如何在代碼的開頭保留UIManager.setLookAndFeel並仍然覆蓋UI設置?

謝謝!

回答

2

試試這個.............

`Changing the Look and Feel After Startup` 

You can change the L&F with setLookAndFeel even after the program's GUI is visible. Tomake existing components reflect the new L&F, invoke the SwingUtilities updateComponentTreeUI method once per top-level container. Then you might wish to resize each top-level container to reflect the new sizes of its contained components.

例如:

UIManager.setLookAndFeel(lnfName); 
SwingUtilities.updateComponentTreeUI(frame); 
frame.pack(); 

換句話說:你可以改變頂級容器的外觀(我沒有測試它是否僅限於頂級容器,或者如果此方法可以應用於NY容器)。或者,更準確地回答你的問題:我沒有看到有樣式化單個組件的方法,但是在(頂層)容器中有單一組件的方法。