JFace Dialog обрабатывает отправленные данные ( okPressed)

Это мой класс диалога: InputDialog, который открывается кнопкой из другого представления. Этот диалог содержит один ввод текста.

public class InputDialog extends Dialog{
   public InputDialog(Shell parentShell) {
      super(parentShell);
      // TODO Auto-generated constructor stub
   }

   @Override
   protected Control createDialogArea(Composite parent) {
       parent.setLayout(new GridLayout(1, false));

       Text txtName = new Text(parent, SWT.NONE);

       return super.createDialogArea(parent);
   }

   @Override
   protected void okPressed() {
       // TODO Auto-generated method stub
       super.okPressed();
   }
}

И вот как я открываю диалог:

buttAdd.addSelectionListener(new SelectionListener() {

    @Override
    public void widgetSelected(SelectionEvent e) {
        // TODO Auto-generated method stub

        InputDialog dialog = new InputDialog(new Shell());
        dialog.open();
    }

    @Override
    public void widgetDefaultSelected(SelectionEvent e) {
        // TODO Auto-generated method stub

    }
});

Как я могу обработать / прочитать возвращенное или переданное значение из диалога?

1 ответ

Решение

Вы можете сохранить введенное значение в поле в диалоговом окне, а затем использовать метод получения после закрытия диалогового окна.

Так как InputDialog блокирует, вам придется проверить его возвращаемое значение.

if (Window.OK == dialog.open()) {
    dialog.getEnteredText();
}

где

public class InputDialog extends Dialog {
    private Text txtName;
    private String value;

    public InputDialog(Shell parentShell) {
        super(parentShell);
        value = "";
    }

    @Override
    protected Control createDialogArea(Composite parent) {
        parent.setLayout(new GridLayout(1, false));

        txtName = new Text(parent, SWT.NONE);

        return super.createDialogArea(parent);
    }

    @Override
    protected void okPressed() {
        value = txtName.getText();
    }

    public String getEnteredText() {
        return value;
    }
}    
Другие вопросы по тегам