如果在 JFrame 里面放了 JButton,那么焦点就到了按钮上,导致 KeyEvent 之类的事件JFrame捕获不到。用下面的方法来解决:
/* 实现 AWTEventListener 接口。 */
public class MainFrame extends JFrame implements AWTEventListener
{
/**
* 构造器。
* @version 2010-3-16 创建构造器。
*/
public MainFrame()
{
super();
initialize();
/* 加监听,设置为只监听键盘按键事件。这里第二个参数填-1就可以监听全部事件。 */
Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK);
}
/* 实现接口的方法以处理事件 */
public void eventDispatched(AWTEvent event)
{
if (event instanceof KeyEvent)
{
KeyEvent keyEvent = (KeyEvent) event;
/* 只处理按键的事件。 */
if (KeyEvent.KEY_PRESSED != keyEvent.getID())
{
return;
}
JOptionPane.showMessageDialog(MainFrame.this, "你按了键盘");
}
}
private void initialize()
{
}
}