Ich zeig euch mal die Stellen:
Code:
//Autosave-Timer
autosave.addActionListener(new ActionListener() {
@Override
@SuppressWarnings({"SleepWhileInLoop", "WaitWhileNotSynced"})
public void actionPerformed(ActionEvent ae) {
if (autosave.isSelected()) {
if (!timerstart) {
autoSaveTimer();
timerstart = true;
} else {
}
} else {
autosaveL.setText("Autosave beendet!");
}
}
});
Code:
public void autoSaveTimer() {
System.out.println("1. Timermeldung");
autosaveL.setText("Autosave gestartet! So oft "
+ "wurde bisher gespeichert: "
+ Integer.toString(autosaveZaehler) + " mal.");
do {
timerstart = true;
timerfinish = false;
System.out.println("Timerfinish am Anfang ist " + timerfinish);
System.out.println("Timerstart ist am Anfang " + timerstart);
System.out.println("Timer wird gestartet");
timer.schedule(timerTask, 1);
if (timerfinish) {
System.out.println("2.Timermeldung");
continue;
} else {
System.out.println("Das darf hier garnicht stehen");
continue;
}
} while (timerfinish);
}
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
autosaveZaehler++;
autosaveL.setText("Autosave gestartet! So oft "
+ "wurde bisher gespeichert: "
+ Integer.toString(autosaveZaehler) + " mal.");
System.out.println("Zeit ist um");
timer.cancel();
timerfinish = true;
timerstart = false;
System.out.println("Timerfinish in run() = " + timerfinish);
System.out.println("Timerstart in run = " + timerstart);
}
};
Wenn das Häckchen drin ist, soll das Label alle X Sekunden die Zahl um eins hochzählen.
Leichter gesagt als getan, brauch Hilfe^^ letzte Hoffnung waren die Continue, aber leider nein. Er watet einfach nciht, bis der Timer fertig ist, sondern startet ihn und macht dann den rest, dadurch wird die while Schleife ja abgebrochen, weil "timerfinish" noch false ist.
Mithilfe der ganzen Outputs wollte ich mir ne Fehlerquelle suchen, hat ja auch geklappt^^
Hilfe^^






