我有一個帶有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