2013-08-04 149 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方法,這不是嚴格要求。