Re: [J2SE] Jdialog的的dispose
依照 Swing 的規格,所有變更 Component 顯示狀態的動作,
皆需要在 Event Dispatch Thread 中執行。
這是為了達到 Thread safe 。
所以正確的作法應當是:
JProgressBar bar = new JProgressBar();
bar.setIndeterminate(true);
final JDialog dialog = new JDialog();
dialog.setModal(true);
dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
dialog.add(bar, BorderLayout.CENTER);
dialog.add(new JLabel("請耐心等候..."), BorderLayout.NORTH);
dialog.pack();
dialog.setLocationRelativeTo(null);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
dialog.setVisible(true);
}
});
try {
// 在此做資料探勘
Thread.sleep(9999999);
} catch (InterruptedException e) {
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
dialog.setVisible(false);
}
});
dialog.dispose();
我想這應該能解決你遇到的問題。
Pao
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.18.62.71
※ 編輯: pao0111 來自: 163.18.62.71 (03/12 17:19)
※ 編輯: pao0111 來自: 163.18.62.71 (03/12 17:21)
推
03/13 00:40, , 1F
03/13 00:40, 1F
→
03/13 08:06, , 2F
03/13 08:06, 2F
→
03/13 08:08, , 3F
03/13 08:08, 3F
討論串 (同標題文章)
完整討論串 (本文為第 5 之 6 篇):