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