当有人试图关闭窗口时,如何阻止窗口处理

时间:2013-07-29 13:20:42

标签: java eclipse rcp

我对eclipse中的rcp应用程序很新,并且遇到了问题。 当有人试图关闭它时,我有一个我不想处理的窗口。相反,我想让它变得不可见。为此,我找到了以下代码

parent.getShell().addShellListener(new ShellAdapter(){
   public void shellClosed(ShellEvent e) {
   e.doit = false;
}

这应该可以防止窗口关闭,但不会做任何事情。我检查了方法shellClosed是否被调用,确实是,但是e.doit = false似乎没有任何效果。 任何人都知道我做错了什么或如何正确地做到了?

2 个答案:

答案 0 :(得分:1)

shellClosed是错误的方法。顾名思义,它在后被称为,因此关闭了shell。

http://www.java2s.com复制:

shell.addListener(SWT.Close, new Listener() {
  public void handleEvent(Event event) {
    int style = SWT.APPLICATION_MODAL | SWT.YES | SWT.NO;
    MessageBox messageBox = new MessageBox(shell, style);
    messageBox.setText("Information");
    messageBox.setMessage("Close the shell?");
    event.doit = messageBox.open() == SWT.YES;
  }
});

编辑:当然你可以完全忽略消息框。

答案 1 :(得分:0)

您可以执行以下操作

    frame.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
            JFrame myFrame = (JFrame)e.getSource();
            myFrame.setVisible(false);//don't dispose just hide it
        }
    });