检测需要按下Shift键的键的KeyEvents

时间:2016-02-03 21:35:54

标签: java keyevent keycode key-events

我对(scene).setOnKeyPressed()有疑问。我正在尝试制作一个简单的计算器,但是键码会发生奇怪的事情。

这只是我代码的一小部分:

switch (KeyEvent.getCode()) {
    case PLUS:
      plus.fire();
      break;
    case MINUS:
      min.fire();
      break;
    case EQUALS:
      // something
}

所以 - 一切都很好,但是因为你需要按 Shift 来获取 + 键(至少在我的键盘)它不会转到 + -case,而是转到 = -case( 我键盘上的

我有没有办法检测到按下了需要先按 Shift 键的按键?

2 个答案:

答案 0 :(得分:1)

对于使用有效键输出按下的任何键(如+, - ,=),将生成3个键事件(KEY_PRESSED,KEY_TYPED,KEY_RELEASED)。 确保调用 KEY_TYPED事件以便在交换机案例内进行处理。

    if(keyEvent.getKeyCode() != KeyEvent.VK_UNDEFINED) { // this will only process KEY_TYPED event
    switch (KeyEvent.getCode()) {
        case PLUS:
          plus.fire();
          break;
        case MINUS:
          min.fire();
          break;
        case EQUALS:
          // something
     }
   }

答案 1 :(得分:0)

所以这是我自己对问题的回答:

它有效,但它有什么用吗?是否有更好的解决方案?

    case EQUALS:
      if(KeyEvent.isShiftDown())
        plus.fire();
        break;
      else
        equals.fire();
        break;
      break;