2

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

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

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

4

2 回答 2

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;
  }
});

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

于 2013-07-29T13:24:43.133 回答
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
        }
    });
于 2013-07-29T13:28:52.500 回答