前辈高手们!快快进来!帮帮小辈我答疑解惑一下吧!

qq408515668 2013-05-19 10:27:32
小菜我近日根据书上写了个小代码:
import java.awt.*;
import java.awt.event.*;

public class KeyEvent2 extends Frame{
Button man;

public KeyEvent2(String title){
super(title);
setLayout(null);
this.setSize(200,200);
man=new Button("MAN");
man.setBounds(100,100,40,20);
man.setBackground(Color.BLUE);
man.setForeground(Color.WHITE);
this.add(man);
man.addKeyListener(new KeyHandler());

}
public static void main(String[] args){
KeyEvent2 me=new KeyEvent2("keyMan");
me.setVisible(true);
}


class KeyHandler extends KeyAdapter{
public void keyPressed(KeyEvent e){
String direction=e.getKeyText(e.getKeyCode());
//int direction=e.getKeyCode();

int x=man.getX();
int y=man.getY();
if(direction.equals("Right")) x+=10;
else if(direction.equals("Left")) x-=10;
else if(direction.equals("Down")) y+=10;
else if(direction.equals("Up")) y-=10;
man.setLocation(x,y);


/*if(direction==KeyEvent.VK_RIGHT) x+=10;
else if(direction==KeyEvent.VK_LEFT) x-=10;
else if(direction==KeyEvent.VK_DOWN) y+=10;
else if(direction==KeyEvent.VK_UP) y-=10;
man.setLocation(x,y);*/


}
}
}
以上代码可以编译通过,但是蓝色部分的代码运行完按上下左右键一点没反应都没有。用红色部分的代码却可以。
小弟我把equals里面的字符串大小写都试过了结果都不行,不知道是哪里出问题了,虚心求各位前辈帮帮忙答疑解惑一下
...全文
121 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010741602 2013-05-19
  • 打赏
  • 举报
回复

看上图,按键的名称都是首字母大写,如Left,Right,建议使用KeyCode来判断按了哪个键,
Java飞虎队欢迎各路菜鸟老鸟加入一起交流讨论。群号105098806
qq408515668 2013-05-19
  • 打赏
  • 举报
回复
引用 1 楼 u010741602 的回复:
给你看段KeyEvent的源码,你或许就明白了,若还不懂再追问吧 Java飞虎队欢迎各路菜鸟老鸟加入一起交流讨论。群号105098806
这个上下左右键的Code我都知道,所以蓝色的那段代码可以用,但是String direction=e.getKeyText(e.getKeyCode());不是可以把code的值转换成相应的字符串吗?那我想知道上下左右键code值转换成相应字符串时是什么?如果是“Left”、“Right”等等,那为什么会没反应?
qq408515668 2013-05-19
  • 打赏
  • 举报
回复
[quote=引用 3 楼 u010741602 的回复:] 谢谢大哥的用心回答,小弟在此感激涕零,其实直接打印一下就可以知道我按的键输出来的字符串是什么了,那个上下左右键的code对应的字符串不是“Right”、“Left”、“Down”、"Up"而是“向右箭头”“向左箭头”...坑死我了~~

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧