如何更新标签以使其显示新文本?

时间:2010-07-29 00:54:35

标签: java swing label repaint

我正在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调用工作完美。基本上我想知道我应该怎么做才能使标签显示已经设置的新文本。

1 个答案:

答案 0 :(得分:1)

CODe的答案是对的,但我会选择SwingWorker班级:

  

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

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