设置JProgressBar TEXT颜色

时间:2015-02-04 14:44:14

标签: java swing colors jprogressbar

我有一个名为playerhealth的JProgressBar。我把酒吧的颜色变成了绿色。这使得文本很难看,因此我想将JProgressBar中的文本颜色设置为黑色。

我读到你可以使用UIManager来设置JProgressBars的全局颜色,但我只想为这个(和另一个,但这没关系)这样做。

我还读过HERE我唯一的另一个选择是改变JProgressBar类。我该怎么做?

2 个答案:

答案 0 :(得分:4)

查看源代码,这不容易。

颜色存储在BasicProgressBarUI类:

  • 在构造函数中,使用静态方法从UIManager检索颜色。静态方法意味着您无法覆盖该呼叫。
  • 颜色存储为私有字段,该类仅公开受保护的getter,不显示setter。没有制定者意味着你不能在外部调用它。

用于ProgressBarUI的{​​{1}}实例派生自JProgressBarUIManager),这也是一种静态方法。

这让我们没有那么多选择。我认为可行的是使用UIManager#getUI方法:

  • 这允许您创建自己的UI实例
  • 这允许覆盖受保护的getter

这种方法的主要缺点是它要求您事先知道应用程序将使用哪种外观。例如,如果应用程序使用Metal,则会变为

JProgressBar#setUI

对于此解决方案不是100%满意,因为必须先了解前瞻性的主要缺点。

答案 1 :(得分:0)

您可以将setStringPainted属性设置为true:

progressBar.setStringPainted(true);
progressBar.setForeground(Color.blue);
progressBar.setString("10%");