Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
abbruch nach Ausführung eines ActionListeners...warum?
bin gerade dabei, mir ein kleines Tool zu basteln, mit dem ich eine mySQL DB auslesen und anzeigen lassen kann. Das Einloggen erfolgt über Nutzername und Passwort und Betätigung eines Login-Buttons. Mein Problem hierbei: das funktioniert tadellos, alles was der Button machen soll, macht er...danach wird allerdings nichts mehr weiter ausgeführt:
Mit den Code-Tags [code=java].. dein code ...[/code]
Kompiliert dein Code sicher?
Wenn ich mir den geposteten Code anschauen fällt mir auf das eine "}" fehlt. Außerdem befindet sich die "letzte" if-Abfrage nicht im ActionListener sondern außerhalb!
das wäre meine nächste frage gewesen. Wenn der Button gedrückt wurde und der Login vollzogen ist, dann soll erst die if-Abfrage stattfinden, ob die Variable logged_in true ist. Die ist als public deklariert, deswegen wunderts mich, warum dann die komplette Abfrage mit in den Actionlistener muss. Die soll ja unabhängig davon sein. Ist das Standard, dass nach der Ausführung eines ActionListeners nichts mehr gemacht wird, bzw kann man das dann "anstupsen" dass es weiter läuft?
Wenn der Button gedrückt wurde und der Login vollzogen ist, dann soll erst die if-Abfrage stattfinden, ob die Variable logged_in true ist. Die ist als public deklariert, deswegen wunderts mich, warum dann die komplette Abfrage mit in den Actionlistener muss. Die soll ja unabhängig davon sein.
Code wird der Reihe nach ausgeführt so wie er eben geschrieben und aufgerufen wird.
Achtung: Du fügst dem Button nur einen ActionListener hinzu! Der Code des ActionListener wird aber erst ausgeführt sobald der Button gedrückt wurde.
Da deine if-Bedingung außerhalb des ActionListener steht wird diese auch nicht nach dem ActionListener aufgerufen. Da nachdem alles in der actionPerformed Methode ausgeführt wurde, wieder dort weitergmacht wird von wo die actionPerformed aufgerufen wurde.
Ich habe den Code mal gekürzt und die fehlende Klammer ergänzt
Java:
button_login.addActionListener(......);
if (vars.logged_in != false) {
System.out.println("login aktion beendet" );
JButton button_show_articles = new JButton("Artikel anzeigen");
button_show_articles.setVisible(true);
}
Das wird der Reihe nach ausgeführt: erst einen ActionListener hinzufügen, dann die if-Abfrage
ok, ich dachte es läuft folgendermaßen ab: die Seite wird geladen, die Buttons werder geladen, die ActionListener listen auf Actions. Beim Drücken eines Buttons wird die Action ausgeführt. Wenn die fertig ist, dachte ich, dass alles was nach dem Listener steht, nochmal ausgeführt wird, aber da lag ich dann falsch.
Ich werds übers we mal zuhause austesten und schauen, ob ich das Prinzip jetzt verstanden hab, Danke für den Denkanstoß
Nein, normalerweise schreibt man eine eigene Klasse welche das ActionListener Interface implementiert, dort wird dann die "actionPerformed" Methode überschrieben.
In deinem code würde dann zum Beispiel nur folgendes stehen: button_login.addActionListener(new MyListener());
Da aber manche "Actions" so kurz sind das sich eigene Klassen nicht lohnen bzw. nicht immer notwendig ist, gibt es auch diese "verkürzte" Schreibweise indem man eine anonyme Klasse schreibt und die Methode direkt implementiert.
Hier wird dann aber auch nur die Methode "actionPerformed" ausgeführt und nichts davor oder danach!