KeyEvent仅针对最后按下的键生成,因此您需要在按下键时保持跟踪(例如,通过将其添加到HashMap),然后在keyReleased上需要从HashMap中删除键。
更好的方法是使用
Key Bindings(而不是KeyListener)将绑定
KeyStroke到
Action。
查看
KeyboardAnimation在使用键盘运动中找到的示例。它解释了有关键绑定的更多信息,并提供了处理上/下/右/左键的完整工作示例。通常,可以同时按住任意两个键以进行对角线运动。
该逻辑也可以使用3个键,但是正如已经提到的,键盘本身可能不支持一次按下那么多键。



