2014-09-16 2 views
1

Eclipse에서 사용자 정의 Dialog에 문제가 있습니다.Jface 대화 상자, 어떤 버튼이 사용자를 눌렀는지 올바르게 검색하는 방법?

처음에는 Dialog를 확장하는 클래스를 만들었습니다. 어딘가에 내가 버튼을 만들

public class ModificarGrupoBCDialog extends Dialog { 

    private static final int CANCELAR = 999; 
    private static final int MODIFICAR = 1; 
    ... 

...

protected void createButtonsForButtonBar(Composite parent) { 
    this.createButton(parent, MODIFICAR, "Modificar", true); 
    this.getButton(MODIFICAR).setEnabled(puedeAltaGrupoBC()); 
    this.bt_ok = this.getButton(MODIFICAR); 

    this.createButton(parent, CANCELAR, "Cancelar", false); 

    Display display = window.getShell().getDisplay(); 
    Image image = new Image(display, ModificarGrupoBCDialog.class.getResourceAsStream("/icons/modificar.png")); 
    this.getButton(MODIFICAR).setImage(image); 
    image = new Image(display, ModificarGrupoBCDialog.class.getResourceAsStream("/icons/cancelar.png")); 
    this.getButton(CANCELAR).setImage(image); 

} 

사용자가 클릭하면 ... 마지막으로
protected void buttonPressed(int buttonId) { 
    switch (buttonId) { 
    case MODIFICAR: 
       // Some Code, for Change Button 

     break; 
    case CANCELAR: 
     setReturnCode(CANCELAR); 
     close(); 
     break; 
    } 

, 이것은 내가에 열고 반환 코드를 얻는 방법이다 호출 원 객체 당신이 볼 수있는

  ... 
      ModificarGrupoBCDialog modificarGrupoBC = new ModificarGrupoBCDialog(window.getShell(), window, gr_bc); 
      if (modificarGrupoBC.getReturnCode() == Window.OK) { 
        //... Some code on OK 
      } else { 
       //another code when cancel pressed. 
      } 
      ; 

, 잠시 시도 후, 나는 또는 취소 스위치 블록에 setReturnCode()를 작성해야, 그 확인은? Dialog 클래스가 자동으로 올바른 반환 코드를 지정한다는 점을 강조합니다.

누군가 나를 좋은 샘플로 안내 할 수 있습니다.

나는 Vogela의 블로그를 읽고있어 해결책은 okPressed() 메소드를 재정의하는 것일 수 있습니까?

좋습니다.

답변

2

표준 대화 상자가 두 곳에서 리턴 코드를 설정합니다

protected void okPressed() { 
    setReturnCode(OK); 
    close(); 
} 

protected void cancelPressed() { 
    setReturnCode(CANCEL); 
    close(); 
} 

그래서 당신의 코드 일 :

setReturnCode(xxxx); 
close(); 

버튼 ID와 사용자가 일치하지 않는 사용하는만큼 잘해야한다 취소 또는 확인 버튼 ID.

protected void buttonPressed(int buttonId) { 
    setReturnCode(buttonId); 
    close(); 
} 
:

또한 단순히이 작업을 수행 MessageDialog에서 사용하는 방법을 사용할 수 있습니다

관련 문제