我有一个名为playerhealth的JProgressBar。我把酒吧的颜色变成了绿色。这使得文本很难看,因此我想将JProgressBar中的文本颜色设置为黑色。
我读到你可以使用UIManager来设置JProgressBars的全局颜色,但我只想为这个(和另一个,但这没关系)这样做。
我还读过HERE我唯一的另一个选择是改变JProgressBar类。我该怎么做?
答案 0 :(得分:4)
查看源代码,这不容易。
颜色存储在BasicProgressBarUI
类:
UIManager
检索颜色。静态方法意味着您无法覆盖该呼叫。用于ProgressBarUI
的{{1}}实例派生自JProgressBar
(UIManager
),这也是一种静态方法。
这让我们没有那么多选择。我认为可行的是使用UIManager#getUI
方法:
这种方法的主要缺点是它要求您事先知道应用程序将使用哪种外观。例如,如果应用程序使用Metal,则会变为
JProgressBar#setUI
对于此解决方案不是100%满意,因为必须先了解前瞻性的主要缺点。
答案 1 :(得分:0)
您可以将setStringPainted属性设置为true:
progressBar.setStringPainted(true);
progressBar.setForeground(Color.blue);
progressBar.setString("10%");