如何在保持原始窗口的同时退出其他窗口

时间:2013-03-28 18:53:19

标签: java swt windowbuilder

我正在执行弹出错误窗口。我尝试了各种各样的东西,但它没有用。我想要做的只是关闭弹出的错误窗口,同时仍然保持原始窗口。

在我的代码中:

final Display display = Display.getDefault();
final Shell shell = new Shell(display, SWT.CLOSE | SWT.TITLE | SWT.MIN|SWT.RESIZE);
shell.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
}
});
shell.setSize(304, 195);
shell.setText("Error Occur")

现在我正试图用一个按钮绑定的代码关闭这个窗口:

    Button OKbutton = new Button(shell, SWT.NONE);
    OKbutton.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDown(MouseEvent e) {
            shell.isDisposed();
        }
    });
    OKbutton.setBounds(125, 123, 75, 25);
    OKbutton.setText("OK");

我也尝试过,shell.close();但它没有用。但是,当我尝试display.close();它会关闭我的原始窗口和错误窗口。

1 个答案:

答案 0 :(得分:0)

由于您没有提供实际打开弹出对话框的代码部分,我只能猜出问题所在:

两个窗口关闭的事实表明您对两者使用相同的Shell。因此,当你关闭一个时,另一个也会关闭。

一个简单的解决方案是为弹出窗口创建一个new Shell(),然后您可以关闭它而不会弄乱原始的Shell


但是,SWT和JFace都提供了弹出对话框的类。使用这些将使您的生活更轻松,并使您的应用程序外观和行为更加原生。

关于SWT和JFace对话here有一个很好的教程。本教程向您展示如何使用一组预定义的对话框(例如错误消息,文件选择器......)以及如何创建自己的对话框。