在进行swing开发时,难免用到键盘监听事件,但是有时候键盘事件会莫名失效。
分析原因是容器失焦了。
例如,一个frame上有多个容器,其中一个包含键盘监听事件,加入我们再加入其他容器时,键盘事件就失效了,这是因为焦点跑到了其他容器上去了,重新获取焦点我们可以这样做:
gamePanel.setFocusable(true);
gamePanel.requestFocus(true);
还有一种情况是我遇到的,我在另一个容器上添加几个按钮事件,点击按钮之后,另一个容器上的键盘监听失效了,这是因为焦点被按钮获取了,重新获取焦点我们可以这样做:
在按钮事件逻辑执行完之后执行如下API:
gamePanel.requestFocus(true); //让面板重新获得焦点
时间: 2024-10-08 13:12:30