到计算机:
int key = e.getKeyCode();
if(e.getKeyCode() == VK_Shift && e.getKeyCode() == VK_1){
text = "!";
}
什么也没做,但对我来说应该将其设置为感叹号。为什么不起作用?我正在尝试制作游戏,并且在聊天框中,我需要在用户执行Shift 1时将文本设置为感叹号。
最佳答案
为什么不起作用?
您在问单个值(e.getKeyCode()
)是否等于VK_Shift
和VK_1
。除非这两个值具有相同的值(它们没有),否则将永远无法满足if
条件。
该文档使这一点很清楚:
虚拟键码用于报告已按下哪个键盘键,而不是由一个或多个键击组合产生的字符(如“ A”,它来自shift和“ a”)。
例如,按Shift键将导致带有VK_SHIFT键代码的KEY_PRESSED事件,而按'a'键将导致VK_A键代码。释放“ a”键后,将使用VK_A触发KEY_RELEASED事件。另外,将生成一个keyChar值为“ A”的KEY_TYPED事件。
因此,换句话说,您需要处理两个KEY_PRESSED
事件,并记住第一个(shift)作为第二个(1)的上下文。
也许您应该寻找KEY_TYPED
事件(使用KeyAdapter.keyTyped()
)并改为使用e.getKeyChar()
。