AWTEventListener l = new AWTEventListener() {
public void eventDispatched(AWTEvent event) {
if (event instanceof MouseEvent) {
if (event.getID() != MouseEvent.MOUSE_PRESSED) {
return;
}
if (!(event.getSource() instanceof JTextField || event.getSource() instanceof JComboBox)) {
if (frame != null) {
frame.setFocusable(true);
frame.requestFocus();
}
}
}
if (event instanceof KeyEvent) {
if (event.getID() != KeyEvent.KEY_PRESSED) {
return;
}
if (event.getSource() instanceof JTextField || event.getSource() instanceof JComboBox) {
return;
}
keyPressed((KeyEvent)event);
}
}
};
Toolkit tk = Toolkit.getDefaultToolkit();
tk.addAWTEventListener(l, AWTEvent.KEY_EVENT_MASK);
tk.addAWTEventListener(l, AWTEvent.MOUSE_EVENT_MASK);