java程序监听不到KeyListener,无法触发

首先,监听键盘相应的控件必须是获得焦点(focus)的情况下才能起作用.
其次,如果你要实现的效果是焦点在任何其他控件上时(比如其他button)回车也能起作用,那么,
这个动作的监听控件就不应该是你的登陆button,因为此时你的焦点在其他地方,你的登陆button并没有焦点,
所以无法获得响应.要在这种情况下使回车键响应,必须将你的监听控件设置在你的panel或fram或更底层的级别上,
这样只要焦点在此控件中任何一个button上,监听动作才能响应, 比如:
Panel p = new Panel();
JButton b1 = new JButton();
JButton b2 = new JButton();
p.add(b1);
p.add(b2);
p.addKeyListener(new KeyListener() { public void keyPressed(KeyEvent e){......} });
p.setFocusable(true);//给p提供焦点.这是swing的焦点问题,JFrame 、JComponent、JLabel默认是不可以获得焦点,
而且默认情况下,swing是把焦点分配给容器内可以获得焦点的第一个组件

猜你喜欢

转载自my.oschina.net/u/586536/blog/1586876