Проблемы с Swing Timer и ActionEvents - PullRequest
2 голосов
/ 13 июня 2011

Я пытаюсь заставить JLabel отображать дату и обновлять каждую секунду.Для этого я использую класс Timer Swing и реализую свой собственный класс с именем DateTimer.DateTimer также является ActionListener.

Это DateTimer:

public class DateTimer implements ActionListener {
    private int delay;
    private JLabel label;
    private Calendar cal;

    public DateTimer(int delay, JLabel label) {
        this.delay = delay;
        this.label = label;

        cal = Calendar.getInstance();
        new Timer(this.delay, this).start();
    }

    public void actionPerformed(ActionEvent e) {
        this.label.setText(this.cal.getTime().toString());
    }

}

Я называю это откуда-то еще в моем коде так:

new DateTimer(1000, this.label);

Я получаю датучтобы отобразить один раз, затем он никогда не обновится.

Я новичок в Java GUI и обрабатываю действия, поэтому прошу прощения за мое незнание.

1 Ответ

7 голосов
/ 13 июня 2011

java.util.Calendar.getInstance() возвращает объект, представляющий текущую дату и время в момент его создания .Он не обновляется автоматически, как вы предполагаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...