簡體   English   中英

初始化時關閉 JFace window

[英]Close JFace window on initialization

我有一個帶有文件列表的 JFace 應用程序。 當用戶單擊列表中的文件時,將打開子 window。 子 window 自動將文件內容加載到 Text 小部件中。

加載文件內容可能會失敗。 我可以檢測到這種情況,我很樂意在子 window 顯示在屏幕上之前關閉它。

我試圖在子 window 的覆蓋protected Control createContents(Composite parent)方法的末尾調用close() 但是我在 JFace 庫的某處遇到了 null 異常:

Exception occurred java.lang.NullPointerException
at org.eclipse.jface.window.Window.initializeBounds(Window.java:758)
at org.eclipse.jface.window.Window.create(Window.java:435)
at org.eclipse.jface.window.Window.open(Window.java:790)

用初始值初始化 window 小部件的正確位置在哪里? 理想情況下,我認為它應該滿足以下條件:

  • 框架應該已經創建了小部件。
  • window 應該還不可見。
  • 如果需要, close()應該正確關閉 window。

如果Window object 還沒有 window Z2591C98B70119FE62481 並open()它,則創建一個新方法。 當調用createContents(Composite parent)時,它在它的create()方法中,以及配置一些視覺細節的其他方法。 這就是initializeBounds()方法,它依賴於已經存在的 shell。 如果你關閉它,go,你得到了例外。

也許您想覆蓋open()方法本身:

public int open() {
   if (!condition)
        return super.open();    // as usual
    else
        return CANCEL;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM