所以我有我的 IWorkbenchWiiondow
对象,window
。
我向其中添加了这个监听器:
window.addPageListener(new IPageListener()
{
@Override
public void pageOpened(IWorkbenchPage page)
{
// method stub
}
/**
* Whenever the user tries to close the workbench window, this method gets called.
*/
@Override
public void pageClosed(IWorkbenchPage page)
{
if (MessageDialog.openQuestion(page.getWorkbenchWindow().getShell(), "Question", "Do you really want to close the application?"))
{
// YES, then no problem, close
return;
}
else
{
// NO
System.out.println("Now what?");
}
}
@Override
public void pageActivated(IWorkbenchPage page)
{
// method stub
}
});
如果用户说否
,如何阻止窗口
关闭?
或者我怎样才能达到相同的最终结果?
最佳答案
正如@david所说,IWorkbenchListener
有一个preShutDown
事件,允许通过返回false
来否决整个工作台的关闭。
当最后一个工作台窗口关闭或通过“文件 > 退出”等操作关闭工作台。
如果您想阻止单个 IWorkbenchWindow
关闭,则需要向表示工作台窗口的 shell 添加一个close 监听器。
例如:
Shell shell = window.getShell();
shell.addListener( SWT.Close, new Listener() {
public void handleEvent( Event event ) {
MessageBox messageBox = new MessageBox( parentShell, SWT.APPLICATION_MODAL | SWT.YES | SWT.NO );
messageBox.setText( "Confirmation" );
messageBox.setMessage( "Close the window?" );
event.doit = messageBox.open() == SWT.YES;
}
} );
将 doit
标志设置为 false 将阻止 shell 被关闭/处置。
关于java - 有没有办法阻止 IWorkbenchWindow 关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32054382/