我需要一些幫助來理解Dialog.dispose()
的一些奇怪行爲。我正在嘗試創建一個「加載」對話框,以便在用戶查看內容之前下載內容。在這種情況下,這是一個聲音文件。CN1 - Dialog.dispose()導致父窗體「返回」
我遇到的問題是,當我在dispose()
「加載」對話框中,當前表單在模擬器上接收到「返回」命令並轉換到導航堆棧上的前一個表單。
我預先創建在程序中的對話框啓動initVars
具有以下:
Dialog updatingDialog = new Dialog(updatingMessage);
updatingDialog.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
updatingDialog.add(progressContainer);
updatingDialog.setDialogUIID("UpdateProgressDialog");
我使用導航到(GUI生成器)形式與有問題的對話框:
showForm(formName, null)
在這種形式,當用戶點擊一個按鈕時,我顯示對話框,請撥打downloadUrlToStorage
(如果文件尚未緩存在存儲器中),然後撥打dialog.dispose()
。這些是使用Runnables
在不同的情況下傳遞給方法在另一個類的可重用性做:
showLoading.run();
Display.getInstance().invokeAndBlock(()->{
Util.downloadUrlToStorage(this.url, getStoredName(), false);
});
hideLoading.run();
showLoading
和hideLoading
被Runnables
傳遞到從調用方法的方法。下面是他們是如何設置的(負載加載對話框):
showLoading = new Runnable() {
@Override
public void run(){
if (!load.isVisible()){
load.showModeless();
}
}
};
hideLoading = new Runnable() {
@Override
public void run(){
if (load.isVisible()){
load.dispose();
}
}
};
那麼,有一個明顯的原因Dialog.dispose()
可能會導致從顯示轉換對話框後面的形式,我怎麼能阻止它?
感謝格式化清理,但拼寫是正確的......這就是我拼寫「行爲」 - 加拿大呃! ;-) –
對不起,這是由我的自動更正語法插件完成的。 – Diamond