java键盘事件监听

我想对我的窗口监听键盘按键以执行操作运行程序后,能够监听,但点击过窗口内后就没法监听了,该怎么弄才能只要焦点在窗口就可以一直都可以监听importjava.awt.*;i... 我想对我的窗口监听键盘按键以执行操作
运行程序后,能够监听,但点击过窗口内后就没法监听了,该怎么弄才能只要焦点在窗口就可以一直都可以监听

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, 20, 50, 50);
}

public void repaint()
{

Graphics g = canvas.getGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, 200, 200);
}

public void keyTyped(KeyEvent e)
{

}

public void keyReleased(KeyEvent e)
{

}

public static void main(String []args)
{
new KeyTest();
}
}
恩,期待高手! :)
展开
 我来答
岑行柏3204
推荐于2018-04-04 · TA获得超过2435个赞
知道大有可为答主
回答量:1549
采纳率:0%
帮助的人:1366万
展开全部
给你的画布注册事件监听器:
this.canvas.addKeyListener(this);//这是要加入的,
this.addKeyListener(this);

原因是因为,当你点击窗口内后,焦点就被 canvas 捕获了,
如果 canvas 没有注册键盘事件监听器,它当然不能对键盘的事件作出反应.
匿名用户
2008-11-22
展开全部
请给 canvas 注册键盘监听器:

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

原因:当你点击窗口内后,canvas就捕获了焦点,如果 canvas 没有注册
键盘监听器,那么当你此时按下按键时,这个事件就得不到处理!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
字母1112下划线
2008-11-22
知道答主
回答量:33
采纳率:0%
帮助的人:0
展开全部
你要给canvas注册键盘监听器才行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友76364bf6d
2008-11-19 · TA获得超过1367个赞
知道小有建树答主
回答量:1103
采纳率:0%
帮助的人:550万
展开全部
再开一个线程肯定行.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ttbetonline
2008-11-22 · 超过12用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:0
展开全部
给 canvas 注册键盘监听器
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式