Swing JButtons und die ActionEvents

Jay1980

Bekanntes Mitglied
Servus,

ich komme meinem Fehler langsam auf die Sprünge:

Also ich habe eine Gui-Instanz mit JButton-Objekten. Nun klick ich einen Button und geb dabei die Gui-Instanz immer mit als Parameter. Dann biete ich auf dem folgenden View auch einen Zurueck-Button an. Klickt der Nutzer diesen gelangt er wieder zurück und nimmt seine Gui auch mit.

Aber nun kommts: Klickt der Nutzer zum zweiten Mal den gleichen Button wie vorher, dann habe ich im View plötzlich doppelt soviele Elemente wie gewünscht.

Beispiel: eine Gui Instanz mit vielen JButtons, einer davon 'Einloggen'. Klickt der User auf 'Einloggen' erscheint ein Feld Nutzer, ein Feld Passwort, ein JButton Absenden und ein JButton Zurueck. Klickt der Nutzer nun Zurueck dann landet er im ersten View. Klickt er nun nochmal 'Einloggen' dann sind die Buttons und die Eingabefelder doppelt da?!

Meine Fehlereingrenzversuche ergab folgendes: im ersten Aufruf des Einloggen Views passt alles, auch beim 'Zurueck' werden alle Componenten wie gewünscht geräumt. Beim zweiten Einloggen-Aufruf sagen mir meine Dialoge zur Wegverfolgung aber, dass der Wunschview erst einmal korrekt erzeugt wird, aber dann eben noch ein zweites Mal. Mir scheint es so, dass das eine Art rekursiver Aufruf ist. Also das beim Zurueckgehen ja noch ein ActionEvent-Objekt des ersten Klicks im Gui-Umfeld rumgammelt und mit dem zweiten Klick auf 'Einloggen' dann eben mitverwurstet wird.

Inwieweit kann das sein und wie macht ihr das, damit ihr solch unerwünschtes Verhalten ausschließen könnt?
 
ich kann da kein allgemeines Paradigma erkennen, du wirst irgendwo einen normalen Programmierfehler haben,
Elemente in eine Liste eingefügt und nicht mehr gelöscht, oder Listener doppelt geadded, oder zwei gleiche Listener,

also: selber korrigieren oder Code posten
 
Danke, ich versuche es selber, aber mir war auch neu, dass ich meinButton.addActionListener(this) zwei ActionListener an den Button pappt, wenn es zweimal aufgerufen wird. Mal schauen ...
 

Zurück
Oben