当前位置: 首页 > 学习 > 电脑学习 > 程序设计 > JAVA > J2ME > 正文

解决J2ME开发中的连续按键问题(2)

http://www.zk168.com.cn  招考学习网 2006-4-11 3:21:41
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--

解决J2ME开发中的连续按键问题(2)
下面是应用程序截图和源代码。


package com.j2medev;

import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class KeyActionMIDlet extends MIDlet
{

private Display display;

private MainCanvas mainCanvas;

protected void startApp() throws MIDletStateChangeException
{

display = Display.getDisplay(this);
mainCanvas = new MainCanvas();
new Thread(mainCanvas).start();
display.setCurrent(mainCanvas);

}

protected void pauseApp()
{
}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException
{
}
}

package com.j2medev;

import javax.microedition.lcdui.*;

public class MainCanvas extends Canvas implements Runnable
{
private String buttonPressed;
private boolean leftPressed;
private boolean rightPressed;
private int px = getWidth() / 2;
public final int py = getHeight() / 2;

public MainCanvas()
{
buttonPressed = " ";
}

private void left()
{
if (px >= 0)
{
px--;
}
buttonPressed = "LEFT";
repaint();
}

private void right()
{
if (px <= getWidth())
{
px++;
}
buttonPressed = "RIGHT";
repaint();
}

public void run()
{
while (true)
{
if (leftPressed)
{
left();
}
if (rightPressed)
{
right();
}

try
{
Thread.sleep(50);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
public void paint(Graphics g)
{
g.setColor(0xFFFFFF);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0x000000);

g.drawString(buttonPressed, 20, 20, Graphics.LEFT | Graphics.TOP);
g.drawString("J2ME", px, py, Graphics.HCENTER | Graphics.TOP);
}

public void keyReleased(int keyCode)
{
int action = getGameAction(keyCode);
switch (action)
{
case LEFT:
leftPressed = false;
buttonPressed = "";
break;
case RIGHT:
rightPressed = false;
buttonPressed = "";
break;
default:
break;
}
repaint();
}
public void keyPressed(int keyCode)
{
int action = getGameAction(keyCode);

switch (action)
{
case LEFT:
left();
leftPressed = true;
break;

case RIGHT:
right();
rightPressed = true;
break;

default:
break;
}
repaint();

}
public void keyRepeated(int keyCode)
{
int action = getGameAction(keyCode);
switch (action)
{
case LEFT:
left();
break;
case RIGHT:
right();
break;

default:
break;
}
repaint();
}
}
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
最新入库:
 
·实质、过程及意义——阿多尔诺“否定的辩证法”探微
·从Ontology的译名之争看哲学术语的翻译原则
·论马克思主义哲学经典的解释——解释学方法及其在马克
·中国哲学当前的核心与周边问题
·和合学与21世纪文化价值和科技
·中国文化的和合精神与21世纪
·宗教之间理当相互宽容
·上半个世纪的自由主义
·殷周至春秋时期神人关系之演进
·大学之道:构建以“三纲八目”为核心的道德修养体系
相关内容:
 
网友点评:
 
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
友情提醒:
 1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网
 友来信指正!
 2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
 3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
 4.如需转载请注明出处及作者,谢谢合作!
 5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
 6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
 7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL:  XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接!
你问我答 更多>>