永发信息网

java,我添加的键盘监听类为什么按键没有反应?求大神帮忙看看

答案:2  悬赏:30  手机版
解决时间 2021-03-15 08:09
public void NEXT() {
Graphics g = null;
if(grade>=GUANQIA) {
DUIHUA("恭喜你完成所有关卡!");
}
else {
grade++;
paintComponent(g);
}
}
private void DUIHUA(String str) {
JOptionPane.showMessageDialog(null, str,"提示",JOptionPane.ERROR_MESSAGE);
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_UP) YIDONG(SHANG);DUIHUA("666");
if(e.getKeyCode()==KeyEvent.VK_DOWN) YIDONG(XIA);DUIHUA("666");
if(e.getKeyCode()==KeyEvent.VK_LEFT) YIDONG(ZUO);DUIHUA("666");
if(e.getKeyCode()==KeyEvent.VK_RIGHT) YIDONG(YOU);DUIHUA("666");
repaint();
if(map[grade-1][x][y]==2) {
if(grade==GUANQIA) {
String str="恭喜通过第"+grade+"关!\n是否进入下一关?";
int type=JOptionPane.YES_NO_OPTION;
int i=0;
i=JOptionPane.showConfirmDialog(null, str,"过关",type);
if(i==1) System.exit(0);
else if(i==0) NEXT();
}
}
}
private boolean GUIZE(int x,int y) {
if(map[grade-1][x][y]==19||map[grade-1][x][y]==39) return false;
return true;
}
private void YIDONG (int event) {
switch(event) {
case ZUO:
if(GUIZE(x-1,y)) x--;
FANG =ZUO;
break;
case YOU:
if(GUIZE(x+1,y)) x++;
FANG =YOU;
break;
case SHANG:
if(GUIZE(x,y-1)) y--;
FANG =SHANG;
break;
case XIA:
if(GUIZE(x,y+1)) y++;
FANG =XIA;
break;
default: break;
}
}
private class AnimationThread extends Thread{
public void run() {
while(true){
if(count==1) count=0;
else if(count==0) count=1;
repaint();
try {
Thread.sleep(300);
}catch(InterruptedException e) {
e.printStackTrace();
}
}
}
}

public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
public void mouseDragged(MouseEvent arg0) {
}
public void mouseMoved(MouseEvent arg0) {
}
public static void main(String[] args) {
JFrame mi = new JFrame();
mi.setTitle("RGP走迷宫");
mi.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ) ;
mi.setVisible(true);
MyPanel panel=new MyPanel();
Container contentPane=mi.getContentPane();
contentPane.add(panel);
panel.setFocusable(true);
panel.addKeyListener( panel);
panel.addMouseMotionListener(panel);
mi.pack();
}
}
最佳答案
能获取焦点的组件,才能侦听键盘事件

~~~~~~~~~~~~~~~
全部回答
addkeylistener public void addkeylistener(keylistener l) 添加指定的按键侦听器,以接收发自此组件的按键事件。如果 l 为 null,则不会抛出异常并且不执行动作。 java.awt.event 接口 keylistener 用于接收键盘事件(击键)的侦听器接口。旨在处理键盘事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象 keyadapter 类(仅重写有用的方法)。 然后使用组件的 addkeylistener 方法将从该类所创建的侦听器对象向该组件注册。按下、释放或键入键时生成键盘事件。然后调用侦听器对象中的相关方法并将该 keyevent 传递给它。 方法摘要 void keypressed(keyevent e) 按下某个键时调用此方法。 void keyreleased(keyevent e) 释放某个键时调用此方法。 void keytyped(keyevent e) 键入某个键时调用此方法。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
蜜雪冰城NO.1519我想知道这个在什么地方
windows7蓝牙怎么打开蓝牙
一点一瞥罩一人打一字
紫徽拱照是什么意思,有什么来历?
长春市棉麻土特产品有限公司在什么地方啊,我
在黄岛新街口等安丘的客车应该在哪边等
找数字规律?怎么做
兴源饭店地址在什么地方,想过去办事
历史上修成阳神都有什么人
漳州市佰隆电器设备公司地址在什么地方,想过
石榴石手串和翡翠手镯可以叠戴吗
为什么大公宝具伤害这么低啊啊啊
五年级暑假手抄报齐心协力共刨优秀班集体图片
谈恋爱,如何干脆的分手?遇到黏人的怎么才能彻
宁波 厨房用设备哪里购买
推荐资讯
成为光的影子,我要让你成为日本第一。是黑子
学生每2人植1棵,老师学生各有多少人
和男友因为结婚的事双方父母有意见、快要分手
中北大学,有什么兼职啊?
吃完香蕉后吃药会有影响吗
农行干部交通肇事并致人死亡判缓刑后能否保留
1995年阳历9月3日阴历8月9号是什麽命
星月饭店在什么地方啊,我要过去处理事情
正则表达式中至少有一个或者多个用什么符号表
新郑龙湖高中有哪些
三星手机如何把屏幕倒过来看
请问王迅演过的电影两个名字的有哪些
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?