Java: Verweisen auf GUI-Komponenten aus einem AbstractAction-Objekt
Es ist häufig erforderlich, das Verhalten anderer GUI-Objekte abhängig vom Status eines anderen GUI-Objekts zu ändern. Z.B. Wenn ein Knopf gedrückt wird, ändert ein Etikett seinen Namen. Wenn ich jedoch ein AbstractAction-Objekt wieJButton myButton = new JButton(myButtonAction);
Ich benötige einen Verweis auf die GUI-Objekte in dem Objekt, das von AbstractAction erbt. Soll ich nur die AbstractAction-Objekte in der GUI erstellen und dann alle erforderlichen GUI-Verweise an die AbstractAction-Objekte übergeben, oder kann dies als fehlerhafter Stil angesehen werden?
Um es konkreter zu machen:
// 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);
}
}