我想在每秒后重新绘制组件,但它不起作用.我在想的是:
try{
while(true){
Thread.currentThread().sleep(1000);
gc.cb.next();
gc.repaint();
}
}
catch(Exception ie){
}
解决方法:
我建议使用javax.swing.Timer来解决这个问题,它会定期在Event Dispatch线程上触发一个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可能不合适,因为它通常用于具有已定义的开始和结束的后台任务,而不是周期性任务.
标签:java
来源: https://codeday.me/bug/20190722/1497986.html