由于需要在JPanel上使用KeyListener键盘监听,但是基本实现正确后,出现了按键但无反应的现象,纠结了一段时间,现在记录一下。
//(导入包 略 )
public class Mainj extends JFrame
{
public static void main(String[] args) {
JFrame jFrame = new JFrame(); //创建床就
jFrame.setSize(700, 600);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel j = new JPanel(); //创建面板
j.addKeyListener(new KeyListener() //使用匿名内部内的方法添加键盘监听
{
@Override
public void keyPressed(KeyEvent e) {
System.out.print(e.getKeyCode());
}
@Override
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
});
jFrame.add(j);
j.requestFocusInWindow();
// j.requestFocus(); 还有这个方法,不过由于平台相关,为了实现跨平台,不建议使用此方法
}
}
在上面的代码中,实现了窗口中的面板添加键盘监听,其中非要需要注意的是:
requestFocusInWindow() 这个方法,它用于获取焦点,
如果没有写这个方法,那么键盘事件是无法响应的,也就是我遇到的问题。
其实还有一个**requestFocus()**方法,不过它的实现与平台有关,而java为了实现跨平台,所以不建议使用这个方法。
KeyListener事件是非常特殊的事件,而其他事件是不需要调用获取焦点的方法的
再更…
强调!
貌似必须在窗口添加面板之后才能使用这个 方法!