
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();
}
}
恩,期待高手! :) 展开
运行程序后,能够监听,但点击过窗口内后就没法监听了,该怎么弄才能只要焦点在窗口就可以一直都可以监听
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();
}
}
恩,期待高手! :) 展开
7个回答
展开全部
给你的画布注册事件监听器:
this.canvas.addKeyListener(this);//这是要加入的,
this.addKeyListener(this);
原因是因为,当你点击窗口内后,焦点就被 canvas 捕获了,
如果 canvas 没有注册键盘事件监听器,它当然不能对键盘的事件作出反应.
this.canvas.addKeyListener(this);//这是要加入的,
this.addKeyListener(this);
原因是因为,当你点击窗口内后,焦点就被 canvas 捕获了,
如果 canvas 没有注册键盘事件监听器,它当然不能对键盘的事件作出反应.
2008-11-22
展开全部
请给 canvas 注册键盘监听器:
...
this.canvas.addKeyListener(this);//这是要加入的语句
this.addKeyListener(this);
.....
原因:当你点击窗口内后,canvas就捕获了焦点,如果 canvas 没有注册
键盘监听器,那么当你此时按下按键时,这个事件就得不到处理!
...
this.canvas.addKeyListener(this);//这是要加入的语句
this.addKeyListener(this);
.....
原因:当你点击窗口内后,canvas就捕获了焦点,如果 canvas 没有注册
键盘监听器,那么当你此时按下按键时,这个事件就得不到处理!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要给canvas注册键盘监听器才行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
再开一个线程肯定行.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给 canvas 注册键盘监听器
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询