【发布时间】:2014-08-06 15:24:22
【问题描述】:
作为一名 Java 新手,以及多年的 iOS 和 .NET 经验,我发现这非常令人困惑。我想要的我认为非常简单 - 我想要一个带有 OK 和 Cancel 按钮的对话框(从主窗口调用)。当您单击确定时,它会执行一些操作,然后关闭对话框。当您单击取消时,它只是关闭对话框。
但是,使用 SWT shell Dialog 类执行此操作并不明显。如何获得一个按钮来关闭对话框并将执行返回到主窗口?
【问题讨论】:
作为一名 Java 新手,以及多年的 iOS 和 .NET 经验,我发现这非常令人困惑。我想要的我认为非常简单 - 我想要一个带有 OK 和 Cancel 按钮的对话框(从主窗口调用)。当您单击确定时,它会执行一些操作,然后关闭对话框。当您单击取消时,它只是关闭对话框。
但是,使用 SWT shell Dialog 类执行此操作并不明显。如何获得一个按钮来关闭对话框并将执行返回到主窗口?
【问题讨论】:
使用Shell.close() 而不是dispose() - 所以shlCheckOut.close()。
Shell.close 发送SWT.Close 事件,然后调用dispose。
【讨论】:
经过反复试验和大量无果的搜索,我在您的按钮代码中发现,您必须调用对话框的 shell 变量的 .dispose() 方法。例如,我的对话框是CheckOutDialog,因此我将shell 变量命名为shlCheckOut。在createContents()方法中,我把按钮代码写成这样:
...
Button btnCancel = new Button(shlCheckOut, SWT.NONE);
btnCancel.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
shlCheckOut.dispose();
}
}
}
【讨论】:
Shell.close() 更合适
Exception in thread "main" org.eclipse.swt.SWTException: Widget is disposed