2016-11-22 1 views
0

Ich habe JButton einreichen, die zwei ActionListeners hatWie werden ActionListener im Speicher eingerichtet?

Category cat = new Category(); 

//this is launched second 
submit.addActionListener(new ConfirmListener(new CategoryService(), cat)); 

//this is launched first. Set values 
submit.addActionListener(new ActionListener() { 

    public void actionPerformed(ActionEvent e) { 
     String title = field.getText(); 
     cat.setTitle(title); 
    } 

}); 

Sind sie auf Stapel gelegt und sie ins Leben gerufen werden, wie sie Pop? Der zweite Listener legt die Werte des Objekts fest und der erste verwendet das Objekt.

Antwort

1

Die ActionListener s sind hinter der Szene in einer EventListenerList gespeichert, so dass sie nach der Reihenfolge der Zugabe ausgeführt werden.

3

Die 'ActionListener's werden in einer Listendatenstruktur gespeichert, die ein Mitglied der Komponente ist. Sie werden normalerweise in der Reihenfolge aufgerufen, in der sie hinzugefügt werden. Dies ist jedoch nicht garantiert und kann z. B. durch Unterklassen anders gehandhabt werden.

Daher wird es als schlechte Methode angesehen, sich auf eine bestimmte Aufrufreihenfolge von Listenern zu verlassen. Wenn eine Bestellung erforderlich ist, erstellen Sie einen zusammengesetzten Listener, der wiederum Ihre tatsächlichen Listener-Methoden in der Reihenfolge aufruft, in der Sie sie benötigen.

Verwandte Themen