主类MIDlet:
package com.lvke.wuwu;
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class PointExample extends MIDlet {
Display display;
MyClass canvas;
public PointExample() {
display=Display.getDisplay(this);
canvas=new MyClass(this);
}
protected void startApp() throws MIDletStateChangeException {
display.setCurrent(canvas);
}
protected void destroyApp(boolean b) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
public void MIDletExit() {
try {
this.destroyApp(false);
} catch (MIDletStateChangeException e) {
e.printStackTrace();
}
this.notifyDestroyed();
}
}
功能实现类:
package com.lvke.wuwu;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
public class MyClass extends Canvas implements CommandListener {
private Command exit;
private Command arase;
private boolean araseFlag=false;
private boolean isFirstPaint;
private int sX=0,sY=0,cX=0,cY=0;
private PointExample point;
public MyClass(PointExample point){
this.point=point;
exit=new Command("退出",Command.EXIT,1);
arase=new Command("Arase",Command.SCREEN,1);
this.addCommand(exit);
this.addCommand(arase);
this.setCommandListener(this);
isFirstPaint=true;
}
public void commandAction(Command c, Displayable d) {
if(c==exit){
point.MIDletExit();
}else if(c==arase){
araseFlag=true;
repaint();
}
}
protected void paint(Graphics g) {
if(araseFlag||isFirstPaint){
g.setColor(255, 255, 255);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
araseFlag=isFirstPaint=false;
sX=0;sY=0;cX=0;cY=0;
return;
}
g.setColor(255, 0, 0);
System.out.println("sx="+sX+"::sy="+sY+"::cx="+cX+"::cy="+cY);
g.drawLine(sX, sY, cX, cY);
sX=cX;
sY=cY;
}
//按下鼠标或点击屏幕时触发事件
protected void pointerPressed(int x,int y){
sX=x;
sY=y;
}
//拖动鼠标或者划屏时,激发该事件
protected void pointerDragged(int x,int y){
cX=x;
cY=y;
repaint();
}
}
效果图: