2013-08-04 151 views
2

我有Java中的自定义类,它扩展了JButton并具有图像背景。更改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); 

回答

3

在你的按钮类创建一个实例字段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(); 
+0

但我如何唤起@Override public void paint(Graphics g)? – Dim

+0

@DanM:通过调用'repaint()'按钮,'myJbtn.repaint()' – Azad

+2

[例如](http://stackoverflow.com/a/10683973/714968) – mKorbel

3

setOpacity方法可以这样实现:

public void setOpacity(float opacity) { 
    this.opacity = opacity; 
    repaint(); 
} 

opacity是存储当前不透明度的实例字段。它由paint用于不透明度值。

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