[Java] Wie kann ich eine while-Schleife wieder beenden?
Ich programmiere gerade einen Autoclicker, jedoch kann ich diesen nicht mehr beenden, weil die while-Schleife im Weg ist und alles blockiert. Ich kann nicht mal das Fenster schließen.
Wie kann ich den Autoclicker so programmieren, dass ich ihn per (vielleicht sogar) Tastendruck starten und stoppen kann? (Das mit dem Tastendruck kriege ich selber hin.)
Ein Tipp oder ein kleiner Codeausschnitt würde völlig reichen.
Kleiner Funfact: Ein Freund hatte diesen gerade ausprobiert und hat 100.000ms eingegeben und ist komplett ausgerastet (schließlich kann man den ja ohne den Taskmanager noch nicht beenden) xD
5 Antworten
Mit
break;
das bei einer entsprechenden If-Abfrage ausgelöst wird
Dann musst du die while-Schleife in einem neuen Thread laufen lassen.
Läuft momentan wohl im selben Thread wie die GUI, weshalb sie unresponsive wird.
Ach Mensch ja, das habe ich sogar schonmal verwendet, nur anders:
new Thread(() -> {...}
Also mit anders meine ich, dass ich kein extra Runnable verwendet habe :3
Kann das mit
Thread acThread;
acThread = new Thread(() -> {
// mein Code
});
gutgehen, wenn ich den Thread mit
acThread.join();
in einer anderen Methode wieder stoppe?
Hört sich falsch an.
Wenn du acThread.join() machst, dann bleibt dein momentaner Thread ja stehen bis der acThread fertig ist. Dann hast du ja das selbe Problem wieder wie momentan.
Ich habe gelesen, dass join zum Stoppen ist, jamoin. Also .stop() ist vorgeschlagen, aber durchgestrichen, dann nehme ich das mal.
work=True;
while(work){
do work
}
Das Event setze das Flag auf false - die Schleife wird beendet.
Bevor du dir die Mühe machst eine Frage zu schreiben kannst du auch Google verwenden und bekommst beispielsweise dieses Ergebnis, welches deine Frage innerhalb von 30 Sekunden hätte beantworten können: https://javabeginners.de/Schleifen_und_Verzweigungen/break_und_continue.php#:~:text=Wird%20die%20Anweisung%20break%20innerhalb,nach%20der%20Schleife%20fortgesetzt%20wird.
Ich habe bereits Google verwendet...
Aber wenn ich break; reinmache, bricht es sofort ab
ja dann mach das doch und code als beispiel wäre wichtig , weiss doch keiner was du da gezaubert hast . schließlich kannst du ja auch eine abbruchbedingung in die while schleife packen und eine keypressed abfrage auch .
Also Java habe ich bislang nicht gelernt, aber versuch es mal mit break.
Problem ist aber, wenn ich auf Start drücke, dass dann in dem Fenster nichts anderes gedrückt werden kann :/ Also der Start-Button ist dann auch ausgegraut.
Bild (zeigt nur das Design)