Как отобразить изменяющийся текст в Java Swing (т.е. отображать время с изменением секунд) - PullRequest
2 голосов
/ 13 июня 2011

Я ищу способ отображения текущей даты и времени на JFrame в виде JLabel, но автоматически обновлять его. Как только он будет отображен на панели, мне не нужно беспокоиться о его ручном обновлении, потому что оно будет обновляться, скажем, каждые 2 секунды.

Есть ли правильный способ сделать это? Вместо того, чтобы вручную изменять текстовое значение JLabel каждые 2 секунды.

Ответы [ 2 ]

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

Используйте javax.swing.Timer, чтобы обеспечить обновление компонента Swing в EDT.

Timer t = new javax.swing.Timer(2000, new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e){
        yourLabel.setText(...);
    }
});
t.start();
7 голосов
/ 13 июня 2011

Использовать Swing Таймер . Как объясняет учебник , это необходимый инструмент для работы.

Единственной альтернативой их использованию является вложение SwingUtilities.invokeLater() или SwingUtilities.invokeAndWait() в TimerTask.

...