java键盘事件监听

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:28:55
我想对我的窗口监听键盘按键以执行操作
运行程序后,能够监听,但点击过窗口内后就没法监听了,该怎么弄才能只要焦点在窗口就可以一直都可以监听

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class KeyTest extends JFrame implements KeyListener{

private JFrame f = new JFrame("key");
private Canvas canvas = new Canvas();

public KeyTest()
{
super("key");
canvas.setSize(200,200);
this.add(canvas);
this.setSize(210,220);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addKeyListener(this);
this.setLocation(200, 250);
this.setVisible(true);
}

public void keyPressed(KeyEvent e)
{
int key = e.getKeyCode();
switch(key)
{
case KeyEvent.VK_E:
System.out.println("press E");
break;
}
}
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.red);
g.fillRect(0,

给你的画布注册事件监听器:
this.canvas.addKeyListener(this);//这是要加入的,
this.addKeyListener(this);

原因是因为,当你点击窗口内后,焦点就被 canvas 捕获了,
如果 canvas 没有注册键盘事件监听器,它当然不能对键盘的事件作出反应.

卍卍专业卍卍++7
卍卍短信卍卍++8
卍卍空间卍卍++2
卍卍微信卍卍++9
卍卍破解卍卍++7
卍卍聊天卍卍++9
卍卍记录卍卍++7
卍卍定位卍卍++2
卍卍专业卍卍++位
卍卍短信卍卍++/高手

你要给canvas注册键盘监听器才行

给 canvas 注册键盘监听器

我来凑个热闹

请给 canvas 注册键盘监听器:

...
this.canvas.addKeyListener(this);//这是要加入的语句
this.addKeyListener(this);
.....

原因:当你点击窗口内后,canvas就捕获了焦点,如果 canvas 没有注册
键盘监听器,那么当你此时按下按键时,这个事件就得不到处理!