如何用按钮关闭JavaSWT窗口?
作为Java的新手,以及多年的iOS和.NET经验,我发现这让人非常困惑。我想要的是一个非常简单的对话框(从主窗口调用),带有OK和Cancel按钮。单击“确定”时,它会执行某些操作,然后关闭对话框。单击“取消”时,它只会取消对话框如何用按钮关闭JavaSWT窗口?,java,dialog,swt,Java,Dialog,Swt,作为Java的新手,以及多年的iOS和.NET经验,我发现这让人非常困惑。我想要的是一个非常简单的对话框(从主窗口调用),带有OK和Cancel按钮。单击“确定”时,它会执行某些操作,然后关闭对话框。单击“取消”时,它只会取消对话框 但是,使用SWT shell对话框类来实现这一点并不明显。如何获得一个按钮来关闭对话框,并将执行返回主窗口?经过反复尝试和大量徒劳的搜索,我在您的按钮代码中发现,您必须调用对话框外壳变量的.dispose()方法。例如,我的对话框是CheckOutDialog,因此
但是,使用SWT shell对话框类来实现这一点并不明显。如何获得一个按钮来关闭对话框,并将执行返回主窗口?经过反复尝试和大量徒劳的搜索,我在您的按钮代码中发现,您必须调用对话框外壳变量的.dispose()方法。例如,我的对话框是
CheckOutDialog
,因此我将shell变量命名为shlCheckOut
。在createContents()
方法中,我将按钮代码如下:
使用Shell.close()
而不是dispose()
-soshlCheckOut.close()
Shell.close
发送SWT.close
事件,然后调用dispose
Shell.close()
更合适greg,谢谢-应该作为答案发布。在我的示例中,shlCheckOut.close()?在我看来,这是非常直截了当的。您尝试过哪些方法呢?因为我对Java还不熟悉,很多对经验丰富的人来说可能很简单的方法对我来说并不适用。这不是我会猜到的。我尝试了代码辅助来浏览这些方法,但这并不明显——最佳做法也不明显。嗯,我在调用close()时遇到异常,但在调用dispose()时却没有<代码>线程“main”org.eclipse.swt.swt中的异常异常异常:已释放小部件
Button btnCancel = new Button(shlCheckOut, SWT.NONE);
btnCancel.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
shlCheckOut.dispose();
}
}
}