2016-12-06 9 views
0

私はEclipse RAPを使用してWebアプリケーションを実現しています。次のコードは、選択listenerの実行中にNullPointerExceptionをスロー:Eclipse RAP Dialog :: open()throw NullPointerException

Link link = new Link(composite_2, SWT.NONE); 
link.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE)); 
link.setText("<a>Dokument erfassen</a>"); 
link.addSelectionListener(new SelectionAdapter() { 
    @Override 
    public void widgetSelected(SelectionEvent arg0) { 

     TestDialog dia = new TestDialog(getShell(), 
        SWT.APPLICATION_MODAL); 
     dia.open(new DialogCallback() { 
      public void dialogClosed(int returnCode) { 
       System.out.println("Stored file: "); 
      } 
     }); 
    } 
}) 

enter image description here

クラスTestDialogのコードは次のようになります。私が代わりにMessageBoxクラスを使用する場合は

public class TestDialog extends Dialog { 
    private static final long serialVersionUID = 1L; 

    public TestDialog(Shell parent) { 
     super(parent); 
    } 

    public TestDialog(Shell parent, int style) { 
     super(parent,style); 
    } 
} 

クラスTestDialogのうち、すべて正常に動作します。

+0

私はあなたがSO あなたは答えが問題を解決したと感じた場合は、としてそれをマークしてくださいする新しいしている参照緑色のチェックマークをクリックして「承認済み」にします。これにより、まだ回答のない古い投稿に焦点を当てることができます。 –

答えて

0

Dialog.openメソッドのRAP 3.1の実装ではshell.open()を使用していますが、実際に変数シェルが値に設定されている場所を見つけることができません。これは "親"ではないでしょうか?

public void open(final DialogCallback dialogCallback) { 
    prepareOpen(); 
    returnCode = SWT.CANCEL; 
    shell.open(); 
    shell.addShellListener(new ShellAdapter() { 
     @Override 
     public void shellClosed(ShellEvent event) { 
     if(dialogCallback != null) { 
      dialogCallback.dialogClosed(returnCode); 
     } 
     } 
    }); 
    } 
0

Dialogの実装では、デフォルトでは何もしませんprepareOpen()をオーバーライドする必要があります。

prepareOpen()から戻ると、ダイアログを表すシェルが作成され、shellフィールドに割り当てられます。例えば

shell = new Shell(parent, SWT.TITLE | SWT.BORDER | SWT.APPLICATION_MODAL); 
shell.setText(getText()); 
// create controls in shell 

がより完全例えばFontDialogを参照してください。https://github.com/eclipse/rap/blob/master/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/FontDialog.java

関連する問題