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