如何使用按钮关闭Java SWT窗口?

4
作为一个Java新手,有多年的iOS和.NET经验,我发现这非常令人困惑。 我认为自己需要的东西非常简单-我需要一个对话框(从主窗口调用),它有确定和取消按钮。当你点击确定时,它执行某些操作,然后关闭对话框。当你点击取消时,它只是关闭对话框。
但是,使用SWT shell Dialog类来实现这一点并不明显。如何获得一个按钮以关闭对话框,并将执行返回到主窗口?
2个回答

5

使用Shell.close()而不是dispose() - 因此使用shlCheckOut.close()

Shell.close发送SWT.Close事件,然后调用dispose


4

在一番试错和大量的无果搜索后,我发现在您的按钮代码中,您需要调用对话框的外壳变量的.dispose()方法。例如,我的对话框是CheckOutDialog,因此我将外壳变量命名为shlCheckOut。在createContents()方法中,我将按钮代码放置如下:

...

Button btnCancel = new Button(shlCheckOut, SWT.NONE);
btnCancel.addSelectionListener(new SelectionAdapter() {
    @Override
        public void widgetSelected(SelectionEvent e) {
            shlCheckOut.dispose();
        }
    }
}

3
Shell.close() 更为恰当。 - greg-449
Greg,谢谢 - 应该发布为答案。所以在我的例子中,shlCheckOut.close();? - Jay Imerman
这对我来说看起来非常简单。你尝试过哪些其他方法? - Thomas S.
由于我是Java的新手,对于经验丰富的人来说可能很简单的东西对我来说并不是。Dispose不是我猜测的那样。我尝试使用代码辅助工具浏览方法,但它并不明显,最佳实践也不是。 - Jay Imerman
当我调用close()时,我遇到了一个异常,但是调用dispose()时没有。Exception in thread "main" org.eclipse.swt.SWTException: Widget is disposed - billmcc
啊哈,close() 被调用了两次。 - billmcc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接