当前页面: 开发资料首页 → J2ME 专题 → 求助,为何keypressed函数没有作用
求助,为何keypressed函数没有作用
摘要: 求助,为何keypressed函数没有作用
我制作了一个图形菜单,通过keypressed来控制menuindex来控制菜单,但是无论怎样都没有作用,程序大概结构是这样:
run(){
while(true)
repaint()
}
paint(){
...
}
keypressed(int code){
...
}
其中menuindex是static变量,在keypressed中根据按键进行自加减,paint中读取menuindex来绘制按钮。按道理从set.current() keypressed就应该监听键盘了,但是为什么没有作用呢?请大家指点,谢谢!
是setCurrent,写错了,呵呵
while(true)
repaint()
Thread.sleep(80);//加入这一句看看
}
keyPressed(int keyCode){} 大小写错误??
还有setCurrent()里面有没有传入CANVAS对象??
我的代码如下,请大家帮我看看,谢谢
public class MainMenu extends Canvas implements Runnable{
private HsggbMIDlet midlet;
static int menuIdx;
static int width;
static int height;
static int startHeight;
static int menuCount=5;
static int menuHeight=12;
//static int action=0;
//boolean pressed=false;
static final int spacing = 6;
Thread menuThread;
Image bgImage;
private Vector onMenuImages;
private Vector offMenuImages;
public MainMenu(HsggbMIDlet midlet){
this.midlet = midlet;
width=getWidth();
height=getHeight();
startHeight=(height-menuHeight*menuCount-(menuCount-1)*spacing)/2;
menuIdx=0;
try{
bgImage=Image.createImage("/res/bg.png");
}catch (Exception ex){
System.out.print("Error creating the background image :" + ex);
}
onMenuImages=new Vector();
offMenuImages=new Vector();
try{
onMenuImages.addElement(Image.createImage("/res/newgame_on.png"));
onMenuImages.addElement(Image.createImage("/res/loadgame_on.png"));
onMenuImages.addElement(Image.createImage("/res/settings_on.png"));
onMenuImages.addElement(Image.createImage("/res/help_on.png"));
onMenuImages.addElement(Image.createImage("/res/exit_on.png"));
offMenuImages.addElement(Image.createImage("/res/newgame_off.png"));
offMenuImages.addElement(Image.createImage("/res/loadgame_off.png"));
offMenuImages.addElement(Image.createImage("/res/settings_off.png"));
offMenuImages.addElement(Image.createImage("/res/help_off.png"));
offMenuImages.addElement(Image.createImage("/res/exit_off.png"));
}catch(Exception ex){
System.out.print("Error creating on and off images :" + ex);
}
menuThread = new Thread(this);
menuThread.start();
}
public void run(){
while(true){
repaint();
try{
Thread.sleep(80);
}catch (Exception ex){
}
}
}
public void paint(Graphics g){
g.setColor(0x50000000);
g.fillRect(0,0,width,height);
g.drawImage(bgImage,(width - bgImage.getWidth())/2,(height - bgImage.getHeight())/2,20);
for (int i = 0; i < menuCount; i++){
Image menuImage;
if (i == menuIdx)
menuImage = (Image)onMenuImages.elementAt(i);
else
menuImage = (Image)offMenuImages.elementAt(i);
g.drawImage(menuImage,(width - menuImage.getWidth())/2,startHeight + (menuHeight + spacing)*i,Graphics.LEFT|Graphics.TOP);
}
}
protected void KeyPressed (int code){
/*if(action!=getGameAction(code))
pressed = true;
else
pressed = false;*/
if (getGameAction(code)==Canvas.UP&&menuIdx-1>=0){
menuIdx--;
}
else if(getGameAction(code)==Canvas.DOWN&&menuIdx + 1
menuIdx++;
}
}
}
keypressed写错了,奇怪?如果写错了编译会出错的啊?
--------------------------------
www.coderpub.com
是继承自Canvas么?
--------------------------
www.coderpub.com
非常感谢大家,的确是keyPessed大小写问题~~~晕~~我一直记得好像是大写K...郁闷~~到处找错