我正在使用Eclipse 3.4.1中的库开发SWT / JFace应用程序。 我在Windows(Vista 32位)和Ubuntu 8.10 32位上遇到以下问题:

我在JFace ApplicationWindow的createMenuManager方法中创建一个菜单栏。我添加了MenuManagers文件,编辑和帮助。

然后我将一个ExitAction添加到文件MenuManager中,如下所示:

filemenu.add(new ExitAction(this));

ExitAction以这种方式定义:

public class ExitAction extends Action {
  final ApplicationWindow window;

  public ExitAction(ApplicationWindow w) {

    this.window = w;
    setText("E&xit");
    setToolTipText("Exit the application");
    setAccelerator(SWT.MOD1 + 'Q');    
  }
}

现在,当我的应用程序启动时,我希望能够按“CTRL + Q”键。退出申请。但这不起作用。仅在我点击“文件”之后在菜单栏中,然后单击“CTRL + Q”键。申请将退出。

我尝试过不同的加速器 - 同样的行为。

但是如果我创建一个“MenuItem”,它确实有用。而不是“行动”为菜单栏做贡献。

这是一个SWT错误还是我错过了什么?

的Torsten。

有帮助吗?

解决方案

更新:我的重复错误还包含一个解决方法。 错误网址是: https://bugs.eclipse.org/bugs/show_bug的CGI?ID = 243758个

基本上解决方法是在 ApplicationWindow 上调用 create(),然后在 getMenuBarManager()。updateAll(true); 上调用所有菜单项都要初始化。

当然,您必须在创建菜单项后调用上述方法。

其他提示

AFAIK setAccelerator(。)除了将相应的文本添加到 MenuItem 之外别无其他。您有责任注册 KeyUp 事件并对其做出反应。

您可以使用 Display.addFilter(SWT.KeyUp,myListener)来独立于您的小部件注册 Listener

原来这是Eclipse 3.4中的一个错误。 我已提交错误报告: https://bugs.eclipse.org/bugs /show_bug.cgi?id=253078

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top