java键盘监听器不起作用,求大神指点

importjavax.swing.event.*;importjavax.swing.JButton;importjavax.swing.JFrame;importja... import javax.swing.event.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.event.*;

public class TankWar extends JFrame {
JButton bt;
JPanel p;
public TankWar(){
super("TankWar");
p=new JPanel();
bt=new JButton("test");
bt.requestFocus();
bt.addKeyListener(new KeyAdapter(){
public void keyTyped(KeyEvent e){
if(KeyEvent.VK_ESCAPE==e.getKeyCode()){
System.exit(0);
}
}
});

this.add(p);
p.add(bt);
p.setSize(80, 80);
bt.setSize(40, 30);
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String[] args) {
new TankWar();

}
}

为什么我按 esc不能退出程序呢?
展开
 我来答
匿名用户
2013-12-04
展开全部
不要使用keyTyped、而是使用keyPressed方法

bt.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(KeyEvent.VK_ESCAPE==e.getKeyCode()){
System.exit(0);
}
}
});
追问
可以了,可是为什么呢?其实我想做一个坦克大战游戏,我给JPanel加了一个监听,用来更改我的坦克位置属性,用一个timer来时刻刷新绘图,可是我的监听器不起作用。我用的keyadapter继承来的,这个大概会是什么问题呢,如果不忙的话我可以发过去源码您看一下
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-04
展开全部
键盘监听器在加了监听器的组件获得焦点的时候才能用. 对于按钮来说, 通常按钮被点了之后, 上面会出一个方框, 证明按钮持有焦点, 你确认一下.
而且为什么要把键盘监听放在按钮上呢, 很不合理.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式