2013-08-04 6 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(); 
} 

Как можно установить методы получения и установки этой функции, так что я могу контролировать непрозрачность из класса, который создает кнопку? мне нужно что-то вроде этого:

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

ответ

3

Создание поля экземпляра opacity в классе кнопки, а затем создать сеттер и добытчиками:

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 (Графика 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, который не является обязательным требованием.