Action è una interfaccia. Quando si vuole creare una action "custom" tipicamente non si implementa direttamente Action ma si estende (per comodità) la classe AbstractAction.
E comunque Action non rappresenta solo la esecuzione di "qualcosa" ma espone anche altre informazioni, ad esempio tramite il isEnabled() (che serve ad esempio per far sì che un pulsante/menù che ha quella action si abiliti o no a seconda di questa informazione).
Quindi creare una Action "composita" cosa vuol dire (in tal sensi)? Hai considerato questi aspetti?
Tecnicamente sì ma è bruttino.
Se vuoi applicare il Composite Pattern ad ActionListener (che è più semplice di un Action) e che esegua sempre N ActionListener in sequenza, si può fare:
codice:public class CompositeActionListener implements ActionListener { private final ActionListener[] listeners; public CompositeActionListener(ActionListener... listeners) { this.listeners = listeners; } @Override public void actionPerformed(ActionEvent e) { for (ActionListener l : listeners) { l.actionPerformed(e); } } }
btn.addActionListener(new CompositeActionListener(actList1, actList2, actList3));
Se vuoi che un ActionListener "blocchi" o no condizionalmente la sequenza, va fatto diversamente.


Rispondi quotando