J2ME Canvas

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

public class Assignment extends MIDlet {
private Display display;
MyCanvas mc=new MyCanvas();
private int myCode;
private int m_KeyCode1;
public Assignment() {

}
protected void startApp() throws MIDletStateChangeException {
display=Display.getDisplay(this);
mc.setTitle("绘图");
display.setCurrent(mc);

}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {

}

protected void pauseApp() {

}
class MyCanvas extends Canvas{

public void paint(Graphics g){
g.setColor(255, 255, 255);
g.fillRect(0, 0, this.getHeight(), this.getWidth());
switch(myCode){
case 49: System.out.println("11111"); repaint(); //g.drawArc(60-10, 60-10, 2*10, 2*10, 0, 360);

}

}
public void keyPressed(int keyCode) {
myCode=keyCode;
}
protected void keyReleased(int keyCode)
{
m_KeyCode1=keyCode;
switch(m_KeyCode1){

}

}

}
}
为什么我运行程序之后按一会打印出来N个11111
怎么修改
哪位大哥教教我哈!
展开
 我来答
从前有坨粑粑
2008-08-07
知道答主
回答量:10
采纳率:0%
帮助的人:4.6万
展开全部
因为你在paint里面调用repaint()方法;
repaint的操作实际上就是重新执行paint一次 如此往复 等于你这就是个死循环

你把switch(myCode){
case 49: System.out.println("11111"); repaint();

}
挪到
public void keyPressed(int keyCode) {
myCode=keyCode;
}
里就不会按一下打印N个11111了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式