我对(scene).setOnKeyPressed()
有疑问。我正在尝试制作一个简单的计算器,但是键码会发生奇怪的事情。
这只是我代码的一小部分:
switch (KeyEvent.getCode()) {
case PLUS:
plus.fire();
break;
case MINUS:
min.fire();
break;
case EQUALS:
// something
}
所以 - 一切都很好,但是因为你需要按 Shift 来获取 + 键(至少在我的键盘)它不会转到 + -case,而是转到 = -case( 我键盘上的。
我有没有办法检测到按下了需要先按 Shift 键的按键?
答案 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;