ファイルのリストを含むJFaceアプリケーションがあります。ユーザーがリスト内のファイルをクリックすると、子ウィンドウが開きます。子ウィンドウは自動的にファイルコンテンツをテキストウィジェットに読み込みます。初期化時にJFaceウィンドウを閉じる
ファイルの内容の読み込みに失敗することがあります。私はそのような状況を検出することができ、子ウィンドウがスクリーンに表示される前に閉じることができます。
子ウィンドウのオーバーライド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)
どこ初期値を持つウィンドウのウィジェットを初期化するための正しい場所はありますか?理想的には、それは条件を満たす必要があると感じます:
- ウィジェットは、フレームワークによって既に作成されている必要があります。
- ウィンドウはまだ表示されないはずです。
close()
は、必要に応じて正しくウィンドウを閉じる必要があります。
は、アイデアをいただき、ありがとうございます。私は今それをチェックすることはできません。しかし、私は 'if'の前に初期化コードを置かなければならないようです。したがって、ウィジェットは 'super.open()'実行時に作成されるため、初期化コードはウィジェットにアクセスできません。私は、初期化コードを2つの部分に分けなければなりません:1)ウィジェットに依存せず、失敗するかもしれません。 2)ウィジェットの扶養家族は、決して失敗してはならない。 – borisstr