我在JFrame中添加了JComponent组件,为什么就监听不到键盘了,要如何监听到键盘?newContentPane.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if ((e.isControlDown() == true)
&& (e.getKeyCode() == KeyEvent.VK_F)) {
System.out.println("ctrl + F has pressed");
} else {
System.out.println("other key pressed");
}
}
public void keyTyped(KeyEvent e) {
//键入某个键时调用此方法
if (e.getKeyChar() == '') {
System.exit(1);
}
}
});
public void keyPressed(KeyEvent e) {
if ((e.isControlDown() == true)
&& (e.getKeyCode() == KeyEvent.VK_F)) {
System.out.println("ctrl + F has pressed");
} else {
System.out.println("other key pressed");
}
}
public void keyTyped(KeyEvent e) {
//键入某个键时调用此方法
if (e.getKeyChar() == '') {
System.exit(1);
}
}
});
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;import javax.swing.JComponent;
import javax.swing.JFrame;public class Test2 extends JFrame { public static void main(String[] args) {
KeyListener keyListener = new KeyListener() { @Override
public void keyTyped(KeyEvent e) {
if (e.getKeyChar() == 'e') {
System.exit(1);
}
} @Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub } @Override
public void keyPressed(KeyEvent e) {
if ((e.isControlDown() == true) && (e.getKeyCode() == KeyEvent.VK_F)) {
System.out.println("ctrl + F has pressed");
} else {
System.out.println("other key pressed");
}
}
}; JComponent jcom = new JComponent() { };
//这句可要 可不要。
jcom.addKeyListener(keyListener);
JFrame frame = new JFrame();
frame.getContentPane().add(jcom);
//关键是这句
frame.addKeyListener(keyListener);
frame.setSize(new Dimension(600, 400));
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }
}