键入Cmd-W时,Mac OS X上的SWT应用程序不会关闭

时间:2014-12-06 08:22:30

标签: java macos swt

我正在Mac OS X 10.10.1上编写SWT应用程序。

通常,如果输入 Cmd - W ,窗口将关闭,如果输入 Cmd - ,应用程序将终止Q 。但是 Cmd - W 快捷方式在我的SWT应用程序上不起作用( Cmd - Q 正在运行)。

我是否需要自己为 Cmd - W 写一些关键事件处理程序?

1 个答案:

答案 0 :(得分:1)

是的,你需要使用一个关键的监听器来解决这个问题。

由于您想要处理密钥而不管哪个控件具有焦点,您可能希望使用Display.addFilter来处理事件:

Display display = ... your display

Listener keyListener = new KeyListener();

display.addFilter(SWT.KeyDown, keyListener);


class KeyListener implements Listener
{
  @Override
  public void handleEvent(final Event event)
  {
    if (event.stateMask == SWT.COMMAND && event.keyCode == 'w')
     {
       ... close the window
     }
  }
}

当窗口关闭时,您还需要使用Display.removeFilter来停止使用此侦听器。