lancerzf 2014-12-26 11:17
浏览 1703

按钮用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状态时,就显示白色。
请问我应该怎么办?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)