日期:2014-05-20  浏览次数:20800 次

Canvas的pointerPressed方法
我知道这个pointerPressed方法是低级界面canvas的处理触屏的方法,之前在这个方法里面System.out.print坐标,每点一次,就会输出一个点坐标。现在我定义个类继承MIDlet,有定义个类继承Canvas,现在我想每点一下坐标,MIDlet中有个Form会增加一个坐标值,也就是说怎样将canvas中的pointerPressed方法中的坐标值动态的传到Form中并显示,我自己做的,貌似可以传进去,但是现实不出来,似乎在pointerPressed中加display.setCurrent(f);就不会再回去坐标,下面是我的代码,高手帮看看,顺便解释下pointerPressed方法怎么实现的。



import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


public class Point extends MIDlet{
public static Display display;
private Mycanvas mycanvas;
public Point() {
display=Display.getDisplay(this);
mycanvas = new Mycanvas();
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub

}
protected void pauseApp() {
// TODO Auto-generated method stub

}
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
display.setCurrent(mycanvas);
}
}


class Mycanvas extends Canvas {
int xx,yy;
private Display display;
public Form f;

public Mycanvas() {
this.display = Point.display;
f=new Form("测试");
}

public void paint(Graphics g) {}
protected void pointerPressed(int x,int y)
{
System.out.println(x+"      "+y);

f.append(x+"                          "+y);
display.setCurrent(f);    //如果把这件话删了,这个坐标点就会动态显示,加了这就就只显示一次
}
}
------解决方案--------------------
你要换个思路:当在Canvas这点击时把坐标点保存起来,在显示Form的时候把保存起来的数据依次添加即可