问题描述
- 按钮用void paintComponent(Graphics g)绘制之后,怎么改变颜色?
-
是这样的,我想弄一个圆角按钮出来,就百度了一下,看到了这篇文章http://blog.csdn.net/lz12366007/article/details/4659056
原作者使用了这种方法绘制按钮void paintComponent(Graphics g){}
问题是这样画出来的按钮,再用常规的JButton.setBackground(Color)改变颜色就没用了。
倒是在void paintComponent(Graphics g){}内部可以设置不同状态下的按钮颜色,但是我觉得有BUG(或者说我不知道怎么达到我想要的效果)
public void paintComponent(Graphics g) {if(getModel().isRollover()){
g.setColor(new Color(255,0,0));
}//如果鼠标在按钮上,就把颜色设置为红色
if (getModel().isPressed()) {
g.setColor(new Color(0,255,0));
}//如果按钮被按下去了,就把颜色设置为绿色
else {
g.setColor(new Color(0,0,255));
}//否则就把颜色设置为蓝色g.fillRoundRect(0, 0, getSize().width-1,getSize().height-1,6,6);
//画出圆角
super.paintComponent(g);
}
麻烦的是中间那三个if-else分支有冲突,isPressed和isRollover没冲突,isPressed和else没冲突,isRollover和else没冲突,但是3个放一起就不行,isPressed会被else覆盖(显现不出按下去时的绿色)
但是当删掉else分支时,还有个默认的颜色——白色,这个白色我不知道在哪里设置的(setBackground也没用)当按钮既不是isRollover状态也不是isPressed状态时,就显示白色。
请问我应该怎么办?
时间: 2024-11-01 12:23:36