Я бы посоветовал использовать javax.swing.Timer
для этой проблемы, которая будет периодически запускать ActionEvent
в потоке диспетчеризации событий (обратите внимание, что вы должны вызывать только перерисовывать и / или манипулировать компонентами Swing из этого нить). Затем вы можете определить ActionListener
для перехвата события и перекрасить ваш компонент в этот момент.
Пример
JComponent myComponent = ...
int delay = 1000; //milliseconds
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
myComponent.repaint();
}
};
new Timer(delay, taskPerformer).start();
Также обратите внимание, что SwingWorker
, вероятно, неуместно , так как он обычно используется для фоновых задач с определенным началом и концом, а не для периодических задач.