2016-12-06 1 views
0

Eclipse RAP를 사용하여 웹 애플리케이션을 구현합니다. 다음 코드는 선택 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 모습 클래스의 코드를 다음

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); 
    } 
} 

내가 대신 MessageBox 클래스를 사용하는 경우 클래스 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()를 오버라이드 (override) 할 필요가있다.

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

관련 문제