java - 如何在 SWT KeyListener 中检测 3 次按键

标签 java eclipse swt rcp

截至目前,我正在使用以下代码来检测两次按键。即,Ctrl+F(或)Shift+1...等等,

 CCombo comboBox = this.cellEditor.getViewer().getCCombo();
KeyAdapter keyAdapter = new KeyAdapter()
{
  @Override
  public void keyPressed(final KeyEvent evt)
  {
  // KeyPreferenceUtils is used to get the eclipse workbench key preference values.
    int keyCode = KeyPreferenceUtils.getKeyValue();
    if ((evt.stateMask == SWT.CTRL) || (evt.stateMask == SWT.ALT) || (evt.stateMask == SWT.SHIFT) || (evt.stateMask == SWT.COMMAND))
    {
      String pressedKey = Action.convertAccelerator(evt.stateMask + evt.keyCode);
      int pressedKeyValue = Action.convertAccelerator(pressedKey);
      if (pressedKeyValue == keyCode)
      {
        comboBox.setListVisible(true);
      }
    }
    else if (evt.keyCode == keyCode)
    {
      comboBox.setListVisible(true);
    }
  }
};
comboBox.addKeyListener(keyAdapter);

现在我的问题是我想检测 3 个按键。即,Ctrl+Shift+2 或一些组合键。

最佳答案

你想要的还是掩码

@Override
public void keyPressed(final KeyEvent evt)
{
// KeyPreferenceUtils is used to get the eclipse workbench key preference values.
    int keyCode = KeyPreferenceUtils.getKeyValue();
    if ((evt.stateMask & (SWT.CTRL | SWT.ALT)) == (SWT.CTRL | SWT.ALT)){
       // both ctrl and alt are pressed so do something
    }
    else if ((evt.stateMask == SWT.CTRL) || (evt.stateMask == SWT.ALT) || (evt.stateMask == SWT.SHIFT) || (evt.stateMask == SWT.COMMAND))
    {
       // do something else
    }
    else if (evt.keyCode == keyCode)
    {
        comboBox.setListVisible(true);
    }
}

关于java - 如何在 SWT KeyListener 中检测 3 次按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38693944/

相关文章:

Java 树查看器 SWT.RIGHT_TO_LEFT

java - 从 Integer.parseInt() 获取 "NumberFormatException",可能是由于误解

Eclipse Neon 中的 Javascript 大纲 - Java EE IDE

java - 没有注册类 'com.appspot.<projectname>.model.News'

java - 有条件地将字符添加到正则表达式匹配

java - SWT GridLayout 自动列计数

java - 应用于字节变量的无符号右移行为

java - 在 Virgo 中部署 VI JAVA 抛出 java.lang.NoClassDefFoundError

java - 部署war包后tomcat的webapps目录下多了很多.aut文件

java - JFace - 更改 ToolBarManager 中的字体颜色