Ich habe überall gesucht und keine Lösung für dieses Problem gefunden, also poste ich es hier. Grundsätzlich habe ich einen Countdown-Timer, der von 180 Sekunden herunter zählt und es erfolgreich an die Konsole druckt. Dieser Timer befindet sich in einer Klasse namens "Model", aber mit Getter habe ich den aktuellen Wert dieses Timers in die Klasse "View" importiert, die alle grafischen Elemente enthält. Auch wenn es erfolgreich auf der Konsole gedruckt wird, wird das JLabel nicht aktualisiert, es liest einfach die ganze Zeit "180".Update JLabel für Timer verwendet
Dies ist die Modellklasse mit dem Timer:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
public class Model {
private int counter = 180;
//private String meme;
public Model(){
ActionListener al=new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if(counter>0) {
counter = counter - 1;
System.out.println(counter);
}
}
};
Timer timer=new Timer(1000,al);
timer.start();
}
public String getCounter(){
return String.valueOf(counter);
}
}
Die Ansichtsklasse ist sehr groß, so habe ich nur den ersten Teil enthalten, die den Code für den Timer und Etikett enthält:
*Other GUI elements initialization*
private JLabel timeLabel=new JLabel("0");
Model model = new Model();
timeLabel.setText(model.getCounter());
*Other unrelated code*
JPanel east = new JPanel();
JPanel eastCenter = new JPanel();
JPanel eastCenterNorth = new JPanel();
east.setLayout(new BorderLayout());
eastCenter.setLayout(new BorderLayout());
eastCenterNorth.setLayout(new GridLayout(2,1));
east.add(eastCenter,BorderLayout.CENTER);
eastCenter.add(eastCenterNorth,BorderLayout.NORTH);
eastCenterNorth.add(timeLabel);
*Other GUI placement code*
Wenn Sie die vollständige ungeschnittene Ansicht Klasse möchten, sagen Sie einfach das Wort, aber ich sollte Sie warnen, es ist ein ziemlicher Schandfleck.
Post mindestens die Code, wo Sie die '' JLabel'' aktualisieren –
Das ist, was ich nicht verstehe, ich kann nicht herausfinden, was zu setzen und wo es für den Updater – bpfuels
Ich nehme an, dass Sie die '' timeLabel'', So ändern müssen Sie müssen Zugriff darauf in Ihrer '' Model'' Klasse haben, um sie zu ändern. –