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();
}
}
java,我添加的键盘监听类为什么按键没有反应?求大神帮忙看看
答案:2 悬赏:30 手机版
解决时间 2021-03-15 08:09
- 提问者网友:嗝是迷路的屁
- 2021-03-14 12:40
最佳答案
- 五星知识达人网友:由着我着迷
- 2021-03-14 13:54
能获取焦点的组件,才能侦听键盘事件
~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~
全部回答
- 1楼网友:想偏头吻你
- 2021-03-14 15:27
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)
键入某个键时调用此方法。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯