我必须每2秒更改一次jLabel的图标。我使用Timer和Timer任务来执行此操作,但它只显示第一个图像。这是代码:
ImageIcon[] icons = {new ImageIcon(this.getClass().getResource("orange.jpg")), new
ImageIcon(this.getClass().getResource("cosmote.jpg")), new
ImageIcon(this.getClass().getResource("vodafone.jpg"))};
java.util.Timer timer = new java.util.Timer();
int indexIcon;
然后在JFrame构造函数中:
initComponents();
open(fisierAgenda);
TimerTask task = new TimerTask() {
public void run() {
indexIcon=(indexIcon++)%3;
jLabel.setIcon(icons[indexIcon]);
jLabel.setText(""+indexIcon);
}
};
timer.schedule(task, 0, 2000);
非常感谢任何帮助。
答案 0 :(得分:3)
Swing is Single Threaded所有活动必须在EDT上完成
来自util.Timer
的输出永远不会被通知Event Dispatch Thread
,而对已经可见的Swing GUI
使用Swing Timer,然后输出将始终在EDT上完成
答案 1 :(得分:-1)
你应该使用一个线程。至少,这就是我要用的。