gui-按钮用void paintComponent(Graphics g)绘制之后,怎么改变颜色?

问题描述

按钮用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

gui-按钮用void paintComponent(Graphics g)绘制之后,怎么改变颜色?的相关文章

java- paintComponent(Graphics g)会连续调用两次,想问各位大神什么原理?

问题描述 paintComponent(Graphics g)会连续调用两次,想问各位大神什么原理? 在paintComponent()里面加多一个输出语句,可以发现发现protected void paintComponent(Graphics g)会连续调用两次,想问各位大神什么原理? import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Graphics; public class DrawArcs ex

graphics-求解 Graphics g=e.getComponent().getGraphics() 的意思

问题描述 求解 Graphics g=e.getComponent().getGraphics() 的意思 public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub Graphics g=e.getComponent().getGraphics(); g.setColor(Color.RED); g.drawLine(x, y, e.getX(), e.getY()); } 我是想利用Graphics

Graphics g = this.CreateGraphics(); 的意思?

问题描述 Graphicsg=this.CreateGraphics();Graphics这个类创建对象怎么会是这样的格式呢?Graphicsg=newGraphics();一般不都是这样的吗?如果说Graphicsg=this.CreateGraphics();左边是创建对象那么右边又是什么? 解决方案 解决方案二:Graphicsg=newGraphics();你用g画,在哪个画布上画呢?Graphicsg=this.CreateGraphics();明确了g是在this上画(如果this是

wpf-想给这段代码生成的按钮添加个按压时按钮改变颜色的效果 哪位大神帮助一下?

问题描述 想给这段代码生成的按钮添加个按压时按钮改变颜色的效果 哪位大神帮助一下? <Window.Resources> <Style x:Key="ButtonStyle1" TargetType="{x:Type Button}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{

ios-UIView绘制时的背景颜色

问题描述 UIView绘制时的背景颜色 关于objective-c或者c#的问题. 在一个 UIView中绘制文本.背景是黑色,我想要改为白色或者透明. 解决方案 在UIView中的初始化代码中加上 self.backgroundColor=[UIColor clearColor]; 解决方案二: 清除背景颜色: CGContextClearRect(context, rect); 或者设置为白色: CGContextSetFillColorWithColor(context, [UIColor

戳这个按钮不能改变颜色

问题描述 戳这个按钮不能改变颜色 test01 <!--这里是通过点击按钮来改变页面的样式.类似于换皮肤的原理--> <link id="mylink"" href="css/1.css" rel="stylesheet" type="text/css" /> <script type="text/javascript"> windows.onload = fu

Java Graphics 图形绘制

Graphics类提供基本绘图方法,Graphics类提供基本的几何图形绘制方法,主要有:画线段.画矩形.画圆.画带颜色的图形.画椭圆.画圆弧.画多边形.画字符串等. 画线段 drawLine public abstract void drawLine(int x1, int y1, int x2, int y2) 在此图形上下文的坐标系中,使用当前颜色在点 (x1, y1) 和 (x2, y2) 之间画一条线  参数: x1 - 第一个点的 x 坐标. y1 - 第一个点的 y 坐标. x2 

求解,关于java gui 想要在paintComponent里面添加新组建的问题

问题描述 importjava.awt.Color;importjava.awt.Dimension;importjava.awt.Graphics;importjava.awt.GridLayout;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;publicclassFirstTryextendsJPanel{Colorcolor;publicFirstTry(Colorcolor){thi

Android按钮按下的时候改变颜色实现方法_Android

需求是在我按下按钮时,该变按钮颜色,使用户感觉到自己按了按钮,当松开的时候,变回原来的颜色. 正常时: 按下时: 有人说,直接监听按钮的按下事件不得了嘛,其实这样确实能实现同样的效果,但是有个缺点,比如很多按钮都需要这样的效果,那你同样的代码就要重复很多次.所以,还是要通用起来. 首先,在res文件夹下新建一个文件夹drawable,这是无关分辨率的: 在下面建立一个xml文件:login_button_selector.xml 复制代码 代码如下: <selector xmlns:androi