2013-06-17 2 views
0

나는 텍스트 및 콤보 위젯을 가지고 내가 콤보에 대한 선택 리스너를 가지고 :콤보 선택을 기반으로 SWT 텍스트를 활성화/비활성화

class MyDialog extends org.eclipse.jface.dialogs.Dialog 
{ 
    private Text text; 
    private Combo combo; 

public void createDialogArea(Composite parent) 
{ 
    text = new Text(composite, SWT.BORDER); 

    combo = new Combo(composite, SWT.NONE); 

    combo.add("One"); 
    combo.add("Two"); 
    combo.add("Three"); 
    combo.addSelectionListener(new SelectionAdapter() 
    { 
     public void widgetSelected(SelectionEvent e) 
     { 
      if(combo.getText().equals("One"); 
      { 
       text.setEnabled(false); 
      } 
     } 
    }); 
} 
} 

그러나 선택 리스너 내부 전에서 널 포인터 예외가 " text.setEnabled (this); " 텍스트와 cobmo가 내 클래스 필드입니다.

감사

+0

'combo'와'text'가 final로 선언되지 않으면 위의 코드를 컴파일 할 수있는 방법이 없습니다. 선언하면 NPE를 얻을 수있는 방법이 없습니다. 코드의 작업 복사본 조각을 제공하거나 stacktrace – Niranjan

+1

에서 발췌 한 내용은 최종적이지 않습니다.이 코드는 제 수업 자료입니다. 클래스 MyCode { 비공개 콤보 콤보; 비공개 텍스트 텍스트; – kk331317

+0

그래, 지금도 똑같은 일을했지만,이 코드는 org.eclipse.jface.dialogs.Dialog 클래스의 "createDialogArea"메소드를 오버라이드 한 내부에 가지고 있으므로 일단 대화 상자가로드되면 텍스트와 콤보가 인스턴스화됩니다. 콤보를 클릭하고 리스너가 호출 될 때 콤보를 선택합니다. 나는 아직도 당신의 아이디어를 얻지 못한다. – kk331317

답변

0

당신은 text.setEnabled(this);에서 널 포인터 예외를 얻고있는 말에 저를 도와주세요,하지만 문 text.setEnabled(this);는 게시 된 코드에 표시되지 않습니다. 단, text.setEnabled(false);이 게시 된 코드에 나타납니다. 따라서 오류가 다른 곳에서 발생하거나 게시물을 수정해야 할 수도 있습니다.

관련 문제