Bei Buttonklick Aktion starten, nach erneutem Klick beenden

Tweaker

Mitglied
Hallo,

ich versuche wie der Titel schon sagt eine Methode zu erstellen die beim Klick eine Aktion startet und bei erneutem Klick beendet.

Java:
				int i = 0;
				if ( i == 1) {
					i = i  -1;
				} else if (i == 0) {
					i = i +1;
				}
				if  (i == 1) {
					Timer repeat = new Timer();
					TimerTask go = new TimerTask() {
						@Override
						public void run() {
			
							muede = muede + 1;
			
						}
					};
					repeat.schedule(go, 1000,  1000);
				
				} 
				return;

mach ich es mir hier zu leicht? Weil Code wird ja normal immer von oben nach unten gelesen und dann bearbeitet.
Ich möchte halt das bei 0 wieder die methode inaktiv ist:rtfm:
 
Stehen Zeile 6 und 7 bei dir im Code auch direkt hintereinander? Dann würdest du ja bei jeder Aktion das Verhalten ändern. Wenn Zeile 2 bis 6 zum Button und der Rest zum Timer gehören, sieht das gut aus. Deine Methode beendet sich dann ja von selbst, weil i auf 0 geht und dadurch beim nächsten mal nicht mehr mit schedule erneut aufgerufen wird.

Der Weg über einen int ist allerdings umständlich, einfacher geht es mit boolean:

Java:
boolean active = false;
...
active = !active; // wechselt von true auf false und umgekehrt
...
if(active) {
...}
 
Ja stimmt du hast Recht, hab garnicht an boolean gedacht, werde ich mal probieren.
Hast du ein Beispiel mit diesem Boolean active= false;
Hab das so noch nie gesehen, würde mich aber interessieren wie das im Konext aussieht und benutzt wird
 
Eigentlich war das Beispiel genau auf deins zugeschnitten 🙂 Zeilen 2 bis 6 bei dir werden durch Zeile 3 bei mir abgedeckt.

Ein boolean kann nur die beiden Wahrheitswerte true und false annehmen. Der !-Operator dreht den Wahreheitswert um, sodass du damit durch wiederholte Anwendung immer wechseln kannst. Mit einer if-Abfrage kannst du direkt den Wahrheitswert abfragen bzw. benutzen, indem du if(active) verwendest.
 

Zurück
Oben