0

我正在 netbeans 中创建一个应用程序,并希望有一个状态标签来告诉程序在任何给定时刻发生的事情。有很多代码,但它的作用大致如下:假设 statusLabel 是一个已经放入程序中的标签,并且每个函数都是耗时几秒钟的昂贵函数。

statusLabel.setText("Completing Task 1");
System.out.println("Completing Task 1");
this.getFrame().repaint(); //I call this function and the two functions below it but the label still does not change.
statusLabel.updateUI(); //Doesn't seem to do much.
statusLabel.revalidate(); //Doesn't seem to do much.
this.completeTask1();
statusLabel.setText("Completing Task 2");
System.out.println("Completing Task 2");
statusLabel.revalidate();
this.getFrame().repaint();
...

这一直持续到 UI 完成 4 个任务。在整个过程中,标签不会更新,直到每个任务都完成后,然后它会显示“完成任务 4”。System.out.println 调用虽然完美。基本上我想知道我应该怎么做才能使标签显示它已设置的新文本。

4

1 回答 1

1

代码的答案是正确的,但我会选择SwingWorker类:

一个抽象类,用于在专用线程中执行冗长的 GUI 交互任务。

这是解决您问题的正确工具。

于 2012-11-12T22:14:06.810 回答