我有一个KeyboardFocusManager
覆盖dispatchKeyEvent()
方法来处理箭头键的导航并输入。只要按下键,我就需要处理关键事件。不幸的是,按住输入结果会导致KEY_TYPED
个事件不包含关键位置。有没有办法找出目前正在按哪个输入?或者我可以取消KEY_TYPED
事件以支持KEY_PRESSED
事件吗?
编辑: 我不能告诉你为什么用KeyboardFocusManager而不是KeyListeners完成它,但我确信它有这样做的原因。截至目前,不可能再改变这一点。问题是,对于我们的系统(旧的终端仿真器),左输入键是导航键。按Enter键会将焦点移动到当前行之后的下一个文本字段。右键是一个命令键,用于将用户输入发送到服务器。
答案 0 :(得分:3)
使用How to Write a Key Listener中的KeyEventDemo
,我无法重现您为KEY_PRESSED
或KEY_RELEASED
所描述的效果。当然,“KEY_TYPED
个事件没有keyLocation
。”
目前尚不清楚您使用Focus Listener的原因,因为许多组件已经bind定义了Action
的某些键。 example绑定箭头键,它响应主机偏好调节的自动重复事件。