如何用按钮关闭JavaSWT窗口?

如何用按钮关闭JavaSWT窗口?,java,dialog,swt,Java,Dialog,Swt,作为Java的新手,以及多年的iOS和.NET经验,我发现这让人非常困惑。我想要的是一个非常简单的对话框(从主窗口调用),带有OK和Cancel按钮。单击“确定”时,它会执行某些操作,然后关闭对话框。单击“取消”时,它只会取消对话框 但是,使用SWT shell对话框类来实现这一点并不明显。如何获得一个按钮来关闭对话框,并将执行返回主窗口?经过反复尝试和大量徒劳的搜索,我在您的按钮代码中发现,您必须调用对话框外壳变量的.dispose()方法。例如,我的对话框是CheckOutDialog,因此

作为Java的新手,以及多年的iOS和.NET经验,我发现这让人非常困惑。我想要的是一个非常简单的对话框(从主窗口调用),带有OK和Cancel按钮。单击“确定”时,它会执行某些操作,然后关闭对话框。单击“取消”时,它只会取消对话框


但是,使用SWT shell对话框类来实现这一点并不明显。如何获得一个按钮来关闭对话框,并将执行返回主窗口?

经过反复尝试和大量徒劳的搜索,我在您的按钮代码中发现,您必须调用对话框外壳变量的.dispose()方法。例如,我的对话框是
CheckOutDialog
,因此我将shell变量命名为
shlCheckOut
。在
createContents()
方法中,我将按钮代码如下:

使用
Shell.close()
而不是
dispose()
-so
shlCheckOut.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();
        }
    }
}