2013-11-01 4 views
0

Я пишу довольно большой класс и не хочу публиковать его здесь. Вопрос в следующем: как я могу ссылаться на кнопку, которая была нажата в конструкторе другого класса? Скажем, я хочу отключить его после некоторых действий слушателя. Если слушатель был анонимными или был внутренний классом SomeClass, я бы просто использовать имя переменного, как это:Отключить JButton от слушателя, который находится в отдельном классе

button.setEnabled(false); 

Но как я могу это сделать, когда мой слушатель отдельного класса? Пробовал использовать e.getModifiers(). SetEnabled (false) и e.getSource(). SetEnabled (false), не работал.

public class SomeClass extends JPanel { 
    private JButton button = new JButton("Button"); 
    public SomeClass() { 
     button.setActionCommand("button"); 
     button.addActionListener(new ButtonListener()); 
    } 


    public static void main(String[] args) { 
     // TODO code application logic here 
    } 
} 
class ButtonListener implements ActionListener { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     String src = e.getActionCommand(); 
     if (src.equals("button")) { 
      //some actions here 
      //then    
     }   
    }  
} 

ответ

1

Попробуйте ((JButton)e.getSource()).setEnabled(false)

Он должен работать)

e.getSource() обратный компонент, к которому относится это событие (docs)

+0

Да, он сделал работу, спасибо очень много. Тем не менее, мне кажется, что это решение - это своего рода «чит». Интересно, есть ли «официальный» способ сделать это? –

+0

Это не чит, это официальный метод – alex2410

Смежные вопросы