单独的线程来更改标签图标

时间:2014-01-02 19:43:12

标签: java multithreading swing timertask

我想使用一个单独的线程每2秒更换一个标签的图标。图标(实际上是图片,reclama1,reclama2等)存储在名为“poze”的项目文件夹中。 因此,当我尝试下面的代码时,我每2秒收到以下错误。 我做错了什么?

错误:

java.lang.RuntimeException: Uncompilable source code - Erroneous tree type:<any>

代码:

public GUI() {
    initComponents();
    JTable.setModel(m);     
    JTable.setRowSorter(sorter);
    bFiltru.setVisible(false);
    bFiltru.setText("Afiseaza intreaga lista");

    TimerTask task = new TimerTask(){
    public void run(){
    for (int i=1; i<5, i++){
    ImageIcon iconLogo = new ImageIcon("poze/reclama"+i+".gif");
    jLabelReclama.setIcon(iconLogo);
    if (i == 4) i = 0;
    }
    }
}
    Timer t = new Timer();
    t.schedule(task, 0, 2000);
}

1 个答案:

答案 0 :(得分:2)

  1. 使用Swing Timer而不是java.util.Timer作为它的用途 - 为您提供计时器功能,但 on Swing事件线程。
  2. 你的代码,即使它有效也不会做你想要的任何事情,因为你的for循环会立即循环
  3. 你根本不应该使用for循环。 Timer提供循环功能。增加计时器中的计数器并使用其值来获取下一个图标。当计数器达到集合的大小时,将计数器设置为0.
  4. 哪一行会导致您的错误,因为它与您描述的问题无关。