Java: Как ссылаться на компоненты GUI из объекта AbstractAction?
Часто необходимо изменить поведение других объектов GUI в зависимости от состояния другого объекта GUI. Например. при нажатии кнопки метка должна изменить свое имя. Тем не менее, когда я использую объект AbstractAction, какJButton myButton = new JButton(myButtonAction);
Мне нужна ссылка на объекты GUI в объекте, который наследуется от AbstractAction. Должен ли я просто создать объекты AbstractAction в графическом интерфейсе, а затем передать все необходимые ссылки GUI на объекты AbstractAction или это можно считать плохим стилем?
Чтобы сделать это более конкретным:
// 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);
}
}