我对eclipse中的rcp应用程序很新,并且遇到了问题。 当有人试图关闭它时,我有一个我不想处理的窗口。相反,我想让它变得不可见。为此,我找到了以下代码
parent.getShell().addShellListener(new ShellAdapter(){
public void shellClosed(ShellEvent e) {
e.doit = false;
}
这应该可以防止窗口关闭,但不会做任何事情。我检查了方法shellClosed是否被调用,确实是,但是e.doit = false似乎没有任何效果。 任何人都知道我做错了什么或如何正确地做到了?
答案 0 :(得分:1)
shellClosed
是错误的方法。顾名思义,它在后被称为,因此关闭了shell。
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
}
});