Why in the following code (part of a class that extends TitleAreaDialog):
@Override
protected void createButtonsForButtonBar(Composite parent) {
super.createButtonsForButtonBar(parent);
this.getButton(IDialogConstants.OK_ID).addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
okPressed();
}
});
}
@Override
protected void okPressed() {
saveInput();
super.okPressed();
}
private void saveInput(){
firstNameSelected = firstNameCombo.getText();
lastNameSelected = lastNameCombo.getText();
}
I get the following exception when I press the OK button:
org.eclipse.swt.SWTException: Widget is disposed at
org.eclipse.swt.SWT.error(SWT.java:4361) at
org.eclipse.swt.SWT.error(SWT.java:4276) at
org.eclipse.swt.SWT.error(SWT.java:4247) at
org.eclipse.swt.widgets.Widget.error(Widget.java:468) at
org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:340) at
org.eclipse.swt.widgets.Combo.getText(Combo.java:1006)
In line: firstNameSelected = firstNameCombo.getText(); of saveInput?
Why is the widget disposed on selection?
Try removing the
createButtonsForButtonBar(Composite parent)method completely. The dialog should callokPressedby itself.Moreover, I think calling
super.okPressed()isn’t necessary. At least I never use it. Just callthis.close()instead.Here is the simple template I use: