Guten Abend,
ich habe eine Klasse mit einem ActionListener. Dessen Methode actionPerformed soll einen Boolean der äußeren Klasse auf true setzen. Wie ist das möglich bzw ist das möglich?
(Ich möchte eher ungern eine Textausgabe dafür nutzen.)
In deiner Klasse mit dem boolschen Wert, erstellst du einen Setter für für die Variable. Deinem ActionListener übergibst du im Konstruktor die Klasse, mit dem boolschen Wert.
Über die Instanze dieser Klasse kannst du dann den Setter aufrufen
Kann leider nicht mehr editieren, aber um es noch hinzuzufügen:
Prinzipiell klappt der Code. Er scheint aber nicht das Problem zu lösen, da man
weiterhin eine Textausgabe mit dem Boolean braucht, damit er im
folgenden korrekt ausgelesen werden kann.
Aktuell klappt das kleine Programm nicht.
Was passieren sollte: Klickt man auf den Button, so wird auf diesem der Text "Geklickt" angezeigt.
(Ich weiß, dass ich diesen auch direkt auf den Button schreiben kann, aber es geht mir hier um das Weiterverarbeiten der "Klick"-Information in einer anderen Klasse. Das ist lediglich ein vereinfachtes Beispiel dafür.)
Ich bin mir nicht sicher wieso, aber, wenn ich vor diese Zeile:
Java:
if(bool) btn.setText("Geklickt");
folgende Zeile schreibe:
Java:
System.out.println(bool);
, so klappt das Programm. Ohne diese Zeile klappt es eben nicht.
Anscheinend wird dadurch irgendetwas aktualisiert? Jedenfalls würde ich diese Konsolenausgabe lieber weglassen, wenn das irgendwie möglich ist.
(Wenn ich die Konsolenausgabe nutze, so könnte ich sogar den Window-Parameter weglassen und stattdessen nur
Java:
setBoolean(true);
in der Methode actionPerformed schreiben. Auch da bin ich mir nicht sicher, wieso das geht bzw teilweise geht. (Teilwese deswegen, da man hier natürlich ebenfalls die Konsolenausgabe benötigt.))
Also erstmal ein while(true) macht man nicht.
Das was du willst kann man auf unterschiedliche weise lösen.
Der Ansatz von @Robat sollte so funktionieren:
holen? In dem Beispiel geht man natürlich davon aus, dass es nur einen Button gibt.
Das kann man natürlich auch mit einer if-else / switch-case abfangen, wenn man das will.
Weiß nicht, welcher Weg in dem Moment am sinnigsten wäre
Ja, das geht auch. Pädagogisch dachte ich mir, das es besser ist den Listener nur für eine Sache zu benutzten und das Casten, bzw. die SwitchCase, IfElse schiene zu ignorieren
Ja, das geht auch. Pädagogisch dachte ich mir, das es besser ist den Listener nur für eine Sache zu benutzten und das Casten, bzw. die SwitchCase, IfElse schiene zu ignorieren