1

您好,我正在尝试在 java 中更改摆动进度条的颜色。最初我尝试使用以下代码:

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 设置?

谢谢!!

4

1 回答 1

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();

换句话说:您可以更改顶级容器的外观和感觉(我没有测试它是否仅限于顶级容器,或者此方法是否可以应用于任何容器)。或者,更准确地回答您的问题:我没有看到有样式设置单个组件的方法,但是有一种方法可以在(顶层)容器中设置单个组件。

于 2012-09-19T09:43:03.293 回答