Hallo zusammen,
ich versuche gerade einen einfachen java util timer zu programmieren. Folgendes soll er machen: zb. von 10 sekunden runterzählen auf 0 sekunden pro sekunde und dann stoppen. Der Timer soll im label angezeigt werden.
Bisher funktioniert bei mir die anzeige und das runter zählen, jedoch lässt er sich nicht stoppen.
sobald ich meine ifclause nutze, die als Bedingung folgendes hat:
Mein kleines Problem:
wenn zähler <=0 soll er ein cancel ausführen. Dieser teil funktioniert leider überhaupt nicht. ich habe bereits probiert die if clause um zu schreiben, aber nichts funktioniert. Der Timer stoppt nicht.
ich hab mich schon gefragt ob java überhaupt den veränderten wert vom zähler erkennt(in der if clause). bestimmt ist die lösung ganz einfach und ich komm nur nicht drauf.
schon mal vielen dank an alle die mir bei diesem kleinen Problem helfen
liebe grüße
Vivyel
hier mal mein minitestcode:
ich versuche gerade einen einfachen java util timer zu programmieren. Folgendes soll er machen: zb. von 10 sekunden runterzählen auf 0 sekunden pro sekunde und dann stoppen. Der Timer soll im label angezeigt werden.
Bisher funktioniert bei mir die anzeige und das runter zählen, jedoch lässt er sich nicht stoppen.
sobald ich meine ifclause nutze, die als Bedingung folgendes hat:
Mein kleines Problem:
wenn zähler <=0 soll er ein cancel ausführen. Dieser teil funktioniert leider überhaupt nicht. ich habe bereits probiert die if clause um zu schreiben, aber nichts funktioniert. Der Timer stoppt nicht.
ich hab mich schon gefragt ob java überhaupt den veränderten wert vom zähler erkennt(in der if clause). bestimmt ist die lösung ganz einfach und ich komm nur nicht drauf.
schon mal vielen dank an alle die mir bei diesem kleinen Problem helfen
liebe grüße
Vivyel
hier mal mein minitestcode:
Java:
public class timertest extends JFrame {
private JPanel contentPane;
private JLabel lbltimer;
int zähler = 3;
//int timer;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
timertest frame = new timertest();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public timertest() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 800, 600);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
contentPane.add(getlbltimer());
timer();
}
private JLabel getlbltimer() {
if (lbltimer == null) {
lbltimer = new JLabel("dfsdfsdf");
lbltimer.setBounds(200, 0, 774, 557);
lbltimer.setFont(new Font("Tahoma", Font.BOLD, 14));
}
return lbltimer;
}
private void timer() {
Timer timer = new Timer();
timer.schedule( new Task(), 1000, 1000 ); // startet nach 1 sekunde danach tickt pro sekunde runter
// lbltimer.getText();
if (zähler>=10) {
timer.cancel(); //stoppen
timer.purge(); // löschen
return;
}
}
class Task extends TimerTask {
@Override public void run() {
lbltimer.setText(""+ zähler);
zähler--;
}
}
}
Zuletzt bearbeitet von einem Moderator: