Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改jButton透明度/不透明度/alpha_Java_Swing_Transparency_Jbutton_Alpha Transparency - Fatal编程技术网

Java 更改jButton透明度/不透明度/alpha

Java 更改jButton透明度/不透明度/alpha,java,swing,transparency,jbutton,alpha-transparency,Java,Swing,Transparency,Jbutton,Alpha Transparency,我有一个Java自定义类,它扩展了JButton并具有图像背景。我可以在类中使用此函数设置alpha: @Override public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g.create(); g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, (float) 0.5)); super.paint(

我有一个Java自定义类,它扩展了JButton并具有图像背景。我可以在类中使用此函数设置alpha:

@Override
public void paint(Graphics g) 
{       
    Graphics2D g2 = (Graphics2D) g.create();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, (float) 0.5));
    super.paint(g2);
    g2.dispose();
}
如何将getter和setter设置为这个函数,以便从创建按钮的类控制不透明度? 我需要这样的东西:

MyJButton myJbtn = new MyJButton();
myJbtn.setOpacity(0.5);
public void setOpacity(float opacity) {
    this.opacity = opacity;
    repaint();
}

在button类中创建一个实例字段
opacity
,然后创建setter和getter:

private float opacity;
//......
public setOpacity(float opacity) {
    this.opacity = opacity;
}

public void getOpacity(){
    return this.opacity
}
然后在为按钮设置任何不透明度后重新绘制类:

MyJButton myJbtn = new MyJButton();
myJbtn.setOpacity(0.5);
myJbtn.repaint();

setOpacity
方法可以如下实现:

MyJButton myJbtn = new MyJButton();
myJbtn.setOpacity(0.5);
public void setOpacity(float opacity) {
    this.opacity = opacity;
    repaint();
}
opacity
是存储当前不透明度的实例字段。它由
paint
用于不透明度值


您可能还需要一个
getOpacity
方法,这不是严格要求的。

但是我如何调用@Override public void paint(Graphics g)?@DanM:通过调用按钮
myJbtn.repaint()