我有一个带有CardLayout组件的JFrame。我使用CardLayout在应用程序执行的不同时刻在不同的JPanel之间切换。在某些时候,我使用SwingWorker对象来生成一些XML文件。在这个时候,我想在我的窗口中显示另一个JPanel来告诉用户等待。在这个JPanel上,我想在3个标签之间切换。更新JFrame中的JPanel
- JLabel 1将是:“请稍等。”
- 的JLabel 2将是: “请稍候。”
- 的JLabel 3是: “请稍候...”
现在的代码如下所示:
ConvertersWorker.execute();
CLayout.show(Cards, WAIT_PANEL);
Timer t =new Timer(500, new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
WaitPanel.SwitchLabels();
}
});
t.start();
while (!this.finishedConverting)
{
}
//After this im am executing other methods based on the generated XML files
SwingWorker代码:
SwingWorker<Boolean, Void> ConvertersWorker = new SwingWorker<Boolean, Void>() {
public Boolean doInBackground() {
Boolean result = RunConverters();
return result;
}
public void done() {
try {
finishedConverting = get();
} catch (InterruptedException ex) {
ex.printStackTrace();
} catch (ExecutionException ex) {
ex.printStackTrace();
}
}
} ;
第二个JPanel甚至没有显示,因为JFrame块。它因为while循环而被阻塞,但我不知道如何以不同的方式实现它。并且SwingWorker的done()方法也不会执行。如果它被执行,那么finishedConverting变量将被设置为true,并且while循环将停止。任何人都可以帮助我找到更好的解决方案吗?
谢谢你的回答。 – Mike