Unterschied zwischen ChangeListener und ItemListener

8

Was ist der Unterschied zwischen ChangeListener und ItemListener für JCheckBox und JRadioButton ? Beide funktionieren gut, wenn sie ausgewählt / abgewählt werden.

Ich weiß, dass einige Komponenten ChangeListener nicht wie JComboBox unterstützen. Abgesehen davon, dass ChangeListener oder ItemListener nur für einige Komponenten funktioniert. Gibt es einen Unterschied zwischen ihnen, wie wann werden sie erzeugt?

Jede Antwort ist willkommen. Vielen Dank im Voraus.

    
user12458 01.07.2013, 11:15
quelle

2 Antworten

5

Beide Listener für JCheckBox funktionieren ähnlich, da beide Ereignisse bei Änderung des Status auslösen, entweder durch Klicken oder durch Leertaste oder programmgesteuert durch doClick() method (Ähnlich wie bei Mausklick). Ein Hauptunterschied besteht jedoch darin, dass der itemListener von JCheckBox über die setSelected(boolean ) -Methode ausgelöst werden kann, die es ermöglicht, das Ereignis basierend auf dem gewünschten Status auszulösen, während andere nur dann reagieren, wenn der Status geändert wird. Warum ist es wichtig? Berücksichtigen Sie beim Start der Anwendung die GUI, die für den definierten Status konfiguriert werden muss, und die Verwendung von setSelected wird ItemListener auslösen. Beachten Sie, dass setSelected exklusiv für ItemListener ist und keine Auswirkungen auf ActionListener hat. Registrieren Sie nicht sowohl ActionListener als auch ItemListener, da beide ausgelöst werden und die Komponente in einem zufälligen Zustand landen

    
rags 01.07.2013, 11:20
quelle
1

ChangeListener wird nicht erkannt, wenn sich der Status der Schaltfläche ändert. ChangeListener wird nicht über Änderungen informiert, nur dass sich das Objekt geändert hat. Element Listener ist nur nicht zufrieden, wenn ein Element ausgewählt ist; nach Benutzer oder setSelected-Methode. Es stimmt auch nicht, dass ChangeListener nicht erkannt wird, wenn die setSelected-Methode aufgerufen wird. Es ist die Änderung des Objektstatus.

    
luke657 01.07.2013 11:55
quelle