JFace에서 Dialog 클래스 사용 방법

4374 단어 dialogjface
cyper의 예:dialog에 주의하세요.open()가 Dialog를 반환합니다.오케이 SWT가 아니라.OK
창 코드:
4
public class ChooseIntegerDialog extends Dialog {
    private String[] possibleIntegerFields;
    /**
     * checkedIntegerFields is fields separated with comma
     */
    private String checkedIntegerFields;
    private List<Button> buttonList = new ArrayList<Button>();

    public ChooseIntegerDialog(Shell parentShell, String[] possibleIntegerFields) {
        super(parentShell);
        this.possibleIntegerFields = possibleIntegerFields;
    }

    @Override
    protected void configureShell(Shell newShell) {
        super.configureShell(newShell);
        newShell.setSize(300, 200);
        newShell.setLocation(450, 200);
        newShell.setText("Choose Integer Dialog");
    }

    @Override
    protected Control createDialogArea(Composite parent) {
        parent.setLayout(new GridLayout(1, false));
        new Label(parent, SWT.NONE).setText("         (        )");

        for (int i = 0; i < possibleIntegerFields.length; i++) {
            Button btn = new Button(parent, SWT.CHECK);
            btn.setText(possibleIntegerFields[i]);
            buttonList.add(btn);
        }

        return super.createDialogArea(parent);
    }

    @Override
    protected void okPressed() {
        StringBuffer sb = new StringBuffer();
        for (Button btn : buttonList) {
            if (btn.getSelection()) {
                sb.append(btn.getText());
                sb.append(",");
            }
        }
        if (sb.length() > 0) {
            sb.setLength(sb.length() - 1);
            checkedIntegerFields = sb.toString();
        }

        super.okPressed();
    }

    public String getCheckedIntegerFields() {
        return checkedIntegerFields;
    }
}
코드 사용:
    String[] possibleIntegerFields = 
            REUtil.getREGroupSet(content, "([_a-zA-Z0-9]+)\\s*(?:=|<>|!=)\\s*'[0-9]+'");
    String checkedIntegerFields = null;
    ChooseIntegerDialog integerDialog = new ChooseIntegerDialog(sw.getShell(), possibleIntegerFields);
    if (integerDialog.open() == Dialog.OK) {
        checkedIntegerFields = integerDialog.getCheckedIntegerFields();
    }else{
        return;
    }

다음은 전재 부분입니다.
최근의 작업은 모드화된 대화상자를 필요로 하는데 JFace의Dialog가 제 요구에 딱 맞고 맞춤형으로 제작할 수 있는 부분도 많아서 사용하기에 매우 편리하다는 것을 발견했습니다.다음은 자주 사용하는 방법들이기 때문에 여기에 기록해 두세요.
 
①제목 표시줄 이름 설정
protected void configureShell(Shell newShell) {  
    // TODO Auto-generated method stub  
    super.configureShell(newShell);  
    newShell.setText("Hello!");  
}   

 
② 창 크기 설정
protected Point getInitialSize() {  
    // TODO Auto-generated method stub  
    return new Point(300,400);  
}   

③ 자체 OK, Cancel 버튼 취소
    @Override  
    protected void createButtonsForButtonBar(Composite parent) {  
        // TODO Auto-generated method stub  
    }   

④ 대화상자에 필요한 컨트롤 정의
    @Override      
    protected Control createDialogArea(Composite parent) {      
        // TODO Auto-generated method stub      
        Composite container = new Composite(parent, SWT.NONE);      
        container.setBounds(0, 0, 300, 400);      
                  
        Button btn = new Button(container, SWT.NONE);      
        btn.setBounds(10, 10, 55, 20);      
        btn.setText("Click!");      
        //     “  ”       
        btn.addSelectionListener(new SelectionAdapter(){  
            @Override  
            public void widgetSelected(SelectionEvent e) {  
                // TODO Auto-generated method stub  
                setReturnCode(CANCEL);  
                close();  
            }  
        });  
        return container;      
    }   

⑤가운데맞춤
이것은 가장 간단합니다. 다이얼로그를 만들 때 부모 창 셸을 지정하면 됩니다.
 
⑥ 셸 스타일 변경
    @Override  
    protected void setShellStyle(int newShellStyle) {  
        // TODO Auto-generated method stub  
        //     “X”    
        super.setShellStyle(newShellStyle ^ SWT.CLOSE);  
    }   

⑥ 사용자 정의 종료 이벤트
@Override  
public boolean close() {  
    // TODO Auto-generated method stub  
    super.close();  
    // do something  
    return true;  
}  

좋은 웹페이지 즐겨찾기