您好我正试图在java中更改我的swing进度条的颜色。 最初我尝试使用以下代码:
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)
然后前景确实改变了。
Anyhows我知道问题来自以下命令:UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
在初始化UI之前调用它。
所以我的问题是:
1)出于好奇:为什么stringPainted(true)
调用设法覆盖前景UI设置?
2)如何将UIManager.setLookAndFeel
保留在代码的开头并仍覆盖UI设置?
谢谢!
答案 0 :(得分:2)
试试这个.............
`Changing the Look and Feel After Startup`
You can change the L&F with setLookAndFeel even after the program's GUI is visible. To
make 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();
换句话说:您可以更改顶级容器的外观(如果仅限于顶级容器,或者此方法可以应用于任何容器,则我没有进行测试)。或者,更准确地回答你的问题:我没有看到有单一组件样式的方法,但是在(顶层)容器中有单一组件的方法。