【发布时间】:2016-12-11 21:37:19
【问题描述】:
好吧,我会提前说,我知道这不是一个新概念……但无论我研究什么似乎都没有任何效果。基本上,我希望能够感应键盘上的每个键,包括不同的 shift/ctrl/alt/enter 键。除了这些之外,每个键都会返回一个唯一的 keyCode,这很好,但我似乎无法区分这些重复项。
无需任何修改,void keyPressed () 就可以正常工作。我被告知要区分重复的键,我可以import java.awt.event.KeyEvent; 然后使用
void keyPressed (KeyEvent e) {
if (keyCode == SHIFT) {
int location = e.getKeyLocation ();
if (location == KEY_LOCATION_RIGHT) {
RShift = true;
}
if (location == KEY_LOCATION_LEFT) {
LShift = true;
}
}
}
但是,这样做会出现一些问题:
- 如果我导入库,
keyPressed ()将永远不会被调用。 - 如果我导入库但取出
keyPressed ()中的 KeyEvent 参数,只要我注释掉对不存在的 KeyEvent e 的任何引用,它就可以工作。 - 如果我不导入它并留下参数,它只会抱怨
getKeyLocation ()不存在,但就是这样。
我需要反向覆盖之类的吗?非常感谢您的帮助!
附:另一个相关问题,如何区分鼠标左键、中键和右键?我可以得到这些和滚轮,但任何其他按钮只返回 0 的 mouseButton 代码。建议?谢谢!
【问题讨论】:
标签: java input processing keyevent