我需要一種方法從數據庫獲取一些數據,並防止用戶在那一刻修改現有數據。安全地打開和關閉模式JDialog(使用SwingWorker)
我創建了一個SwingWorker來創建數據庫更新和一個模態JDialog,以顯示用戶正在進行的操作(使用JProgressBar)。模態對話框的defaultCloseOperation設置爲DO_NOTHING,因此只能通過正確的呼叫關閉 - 我使用setVisible(false)
。
MySwingWorkerTask myTask = new MySwingWorkerTask();
myTask.execute();
myModalDialog.setVisible(true);
的SwingWorker的做一些事情中doInBackground(),最後調用:
myModalDialog.setVisible(false);
我唯一擔心的,我的問題: 是可能的SwingWorker的執行setVisible(false)
之前,它是setVisible(true)
在工人產卵後的生產線?
如果是這樣,setVisible(true)
可能會永遠阻塞(用戶無法關閉模式窗口)。
我一定要實現的東西如:
while (!myModalDialog.isVisible()) {
Thread.sleep(150);
}
myModalDialog.setVisible(false);
,以確保它真正能拿到關閉?
你應該叫'myModalDialog.setVisible(假);''中'做的(),而不是'doInBackground()'。你爲什麼不在'execute'之前調用'setVisible(true)'? – assylias
setVisible(true)是一個阻止呼叫 – user1713059
哈哈 - 非常好的一點確實:-) – assylias