0

我正在弹出一个错误窗口。我尝试了各种方法,但没有奏效。我想要做的只是关闭弹出的错误窗口,同时仍然保持原始窗口。

在我的代码中:

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(); 它关闭了我的原始窗口和错误窗口。

4

1 回答 1

0

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

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

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


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

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

于 2013-03-28T21:19:03.103 回答