Java: Como fazer referência a componentes GUI de um objeto AbstractAction?
Geralmente, é necessário alterar o comportamento de outros objetos da GUI, dependendo do estado de outro objeto da GUI. Por exemplo. quando um botão é pressionado, um rótulo deve mudar seu nome. No entanto, quando eu uso um objeto AbstractAction comoJButton myButton = new JButton(myButtonAction);
Eu preciso de uma referência aos objetos GUI no objeto que herda de AbstractAction. Devo apenas criar os objetos AbstractAction na GUI e depois passar todas as referências GUI necessárias para os objetos AbstractAction ou isso poderia ser considerado um estilo ruim?
Para torná-lo mais concreto:
// AbstractAction
public class MyAction extends AbstractAction {
public MyAction(String name,
String description, Integer mnemonic, JLabel) {
super(name);
putValue(SHORT_DESCRIPTION, description);
putValue(MNEMONIC_KEY, mnemonic);
}
public void actionPerformed(ActionEvent e) {
// do something
}
}
}
public class GUI{
public Action myAction = null;
public GUI(){
JLabel label = new JLabel("text");
//This is not a good idea:
myAction = new MyAction("some text" , desc, new Integer(KeyEvent.VK_Q), label);
JButton myButton = new JButton(myAction);
}
}