Sto cercando di separare la funzione dallo stato nella mia applicazione GUI mediante l'uso di oggetti Action. Ho avuto successo nell'usarli per creare voci di menu e pulsanti con la stessa funzionalità.AbstractAction come WindowListener
Il mio problema è questo: voglio avere la stessa azione sia per la voce "uscita" nel mio menu che per il pulsante di chiusura del frame.
Attualmente sono stato in grado di risolverlo aggiungendo quanto segue WindowListener al telaio:
private class MainWindowListener extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
new ExitAction(model).actionPerformed(new ActionEvent(e.getSource(), e.getID(), "Exit"));
}
}
non c'è un modo più semplice più semplice per fare questo?
Un approccio correlato consiste nel richiamare il metodo 'doClick()' di un pulsante, come illustrato [qui] (http://stackoverflow.com/a/5797965/230513). – trashgod
Questa cosa è qualcosa di nuovo per me, e abbastanza interessante :-) –
Quindi, se ho capito bene, usare dispatchEvent() è un po 'l'opposto di quello che sto facendo: mantenere il codice in WindowListener invece che in un azione, e facendo in modo che l'azione invii un evento lì invece di fare in modo che WindowListener inoltri il suo evento all'azione? Interessante ... – FinalArt2005