我在JFrame中添加了JComponent组件,为什么就监听不到键盘了,要如何监听到键盘?

sinat_29401781 2016-08-15 03:24:54
我在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);
}
}
});
...全文
227 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
NewMoons 2016-08-15
  • 打赏
  • 举报
回复
你让谁监听键盘事件,是jframe、JComponent还是两者都监听。 newContentPane 这又是一个什么东西? 啥也不说了,上代码:
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);

	}
}

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧