今天在写俄罗斯方块的时候遇到这样一个问题:如果不初始化JPanel的按钮,则JPanel的KeyListener可以监听,但是初始化JPanel的按钮之后,KeyListener不能监听了,即失效了。
查了一下,发现是加了按钮之后,JPanel未获得焦点,所以KeyListener失效了。
相信还有很多java初学者也会遇到这个问题吧,下面提供一个简单解决方案,即给每个JButton添加KeyListener,当调用keyPress、keyType或者keyRelease时,调用当前面板的相同方法即可。如果有多个按钮时,可以继承JButton类写一个MyButton,构造函数传入你要监听的面板,然后做同样的操作即可。