【发布时间】:2017-11-28 06:06:34
【问题描述】:
我为我的JProgressBar 制作了一个自定义用户界面,如下所示:
public class BarUI extends BasicProgressBarUI {
private Rectangle r = new Rectangle();
@Override
protected void paintIndeterminate(Graphics g, JComponent c) {
Graphics2D G2D = (Graphics2D) g;
G2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
//r = getBox(r);
//g.setColor(c.getForeground());
//g.fillRect(r.x,r.y,r.width,r.height);
}
}
这很好用,并将进度条的前景色更改为所需的颜色。问题是我无法更改其背景颜色。
我尝试了以下选项,但都不起作用:
选项 1:c.setBackground(new Color(184, 184, 184,255));
选项 2:((Graphics2D) g).setBackground(new Color(184, 184, 184,255));
为什么这不能正常工作?
更新
我对代码进行了更多修改,并从 BarUI 类中删除了最后 3 行,因为它们不需要它们。这也是我用来在框架内制作实际进度条的代码:
Bar.setUI(new BarUI());
Bar.setSize(new Dimension(180,2));
Bar.setBackground(new Color(184, 184, 184,255));
Bar.setForeground(new Color(0, 126, 255,255));
【问题讨论】:
-
为什么不呢,使用
g.setColor(c.getBackground())然后用它填充组件,然后绘制前景?r是否有可能填充整个组件? -
@MadProgrammer 我不明白你想说什么。我也更新了问题。
-
我想说的是,您是否真的尝试过自己(
paintIndeterminate)使用与绘制框相同的技术来绘制背景 -
@MadProgrammer 你的想法奏效了,非常感谢。
标签: java swing colors jprogressbar