我需要回应最小化/最大化Eclipse窗口的事件。我该怎么做?
答案 0 :(得分:1)
我可以建议一种方法:你可以为它写一个插件 例如,看到这个改进的“教程”,我做了它,尝试它适用于Ganymede。在最终的Shell变量上有点难看,但是有效。如果你知道更好的解决方案只是拍:) ((实际上有一种方法:扩展自己的ControlListener类,但需要更多编码:))
打开SampleHandler类,然后用此代码替换execute()函数。
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchWindow window = HandlerUtil
.getActiveWorkbenchWindowChecked(event);
final Shell s = window.getShell();
window.getShell().addControlListener(new ControlListener() {
@Override
public void controlMoved(ControlEvent e) {
// TODO Auto-generated method stub
}
@Override
public void controlResized(ControlEvent e) {
MessageDialog.openInformation(s,
"WindowEventHandler Plug-in", "RESIZED: "
+ e.toString() + "\nHello, Eclipse world");
}
});
MessageDialog.openInformation(window.getShell(),
"WindowEventHandler Plug-in",
"Hello, Eclipse world, resize will be taken care of.");
return null;
}
现在。启动项目(Run As-> Eclipse应用程序),然后在工具栏上显示一个Eclipse按钮。点击它!它触发上面代码的运行,其中的重点是window.getShell()返回主窗口组件,因此您可以向其添加侦听器。
如果您希望它自动运行,而不仅仅是按钮,您必须找到一个插件,其中入口点连接到应用程序的开头。
希望这有帮助。
b
答案 1 :(得分:1)
找到了一种轻松实现的方法:您必须创建ShellListener
或ShellAdapter
,其中包含在对图标化,去图标化,激活,停用和关闭外壳时调用的方法。
创建后,将其添加为具有以下行的侦听器:
int i;
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().addShellListener( yourListenerHere);
如果您从shell的侦听器列表中删除它,请确保Workbench,ActiveWorkbnchWindow和Shell不为空。