Hallo Leute!
Ich versuche mich gerade in Java ein zu arbeiten und hab mir ein kleines GUI Programm geschrieben, in dem ich mehrere Male einen Countdown laufen lassen möchte. Ich habe aber ein Problem: Ich weiß nicht wie ich einen Timer nach dem anderen laufen lassen soll. Mein Code ist so aufgebaut, dass es 8 JTextFields mit vorgegebenen Werten (meistens 30 Sekunden) gibt. Dazu einen Button, der den Countdown startet. Wenn ich mein Programm starte, dann wird nur der erste Countdown ausgeführt, aber kein weiterer. Vielleicht könnt ihr mir da weiter helfen. Ich blicke das ganze nicht so recht. Hier mal mein Code:
Danke schon einmal für euere Hilfe!
Ich versuche mich gerade in Java ein zu arbeiten und hab mir ein kleines GUI Programm geschrieben, in dem ich mehrere Male einen Countdown laufen lassen möchte. Ich habe aber ein Problem: Ich weiß nicht wie ich einen Timer nach dem anderen laufen lassen soll. Mein Code ist so aufgebaut, dass es 8 JTextFields mit vorgegebenen Werten (meistens 30 Sekunden) gibt. Dazu einen Button, der den Countdown startet. Wenn ich mein Programm starte, dann wird nur der erste Countdown ausgeführt, aber kein weiterer. Vielleicht könnt ihr mir da weiter helfen. Ich blicke das ganze nicht so recht. Hier mal mein Code:
Java:
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class mainTimer extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
// Variable declaration
final int SIZE = 8;
JLabel timerLabel;
JLabel[] lblFields = new JLabel[SIZE];
String strLabelText[] = new String[SIZE];
int counter;
JTextField[] tfFields = new JTextField[SIZE];
JButton button;
Timer timer;
public mainTimer () {
setLayout(new GridLayout(9, 9, 5, 5));
// Set later label text
strLabelText[0] = " Full Plank: ";
strLabelText[1] = " Elbow Plank: ";
strLabelText[2] = " Raised Leg Plank (left): ";
strLabelText[3] = " Raised Leg Plank (right): ";
strLabelText[4] = " Side Plank (left): ";
strLabelText[5] = " Side Plank (right): ";
strLabelText[6] = " Full Plank: ";
strLabelText[7] = " Elbow Plank: ";
// Create different JTextFields with default values
for (int i = 0; i < tfFields.length; i++) {
// Create new JLabel and ad them to the grid
lblFields[i] = new JLabel(strLabelText[i], SwingConstants.LEFT);
add(lblFields[i]);
// Add default value to JTextField
if (i == 0 || i == 7) {
tfFields[i] = new JTextField("60", 5);
} else {
tfFields[i] = new JTextField("30", 5);
}
add(tfFields[i]);
}
// Button to start the timer
button = new JButton("Start timing");
add(button);
timerLabel = new JLabel("Waiting...", SwingConstants.CENTER);
add(timerLabel);
for (int j = 0; j < tfFields.length; j++) {
event e = new event(tfFields[j]);
button.addActionListener(e);
}
}
public class event implements ActionListener {
JTextField tf;
// Constructor
public event (JTextField eventTF) {
this.tf = eventTF;
}
public void actionPerformed(ActionEvent e) {
int count = (int) (Double.parseDouble(tf.getText()));
timerLabel.setText("Time left: " + count);
TimeClass tc = new TimeClass(count);
timer = new Timer(1000, tc);
timer.start();
}
}
public class TimeClass implements ActionListener {
int counter;
public TimeClass (int counter) {
this.counter = counter;
}
public void actionPerformed (ActionEvent tc) {
counter--;
if (counter >= 1) {
timerLabel.setText("Time left: " + counter);
} else {
timer.stop();
timerLabel.setText("Done!");
Toolkit.getDefaultToolkit().beep();
}
}
}
// Main start method
public static void main (String args[]) {
mainTimer gui = new mainTimer();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setSize(310, 250);
gui.setTitle("Timer Program");
gui.setVisible(true);
}
}
Danke schon einmal für euere Hilfe!