j2me简单的绘图实例

来源:互联网 发布:笔记本插着网线没网络 编辑:程序博客网 时间:2024/05/24 06:23

主类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();
 }

}

效果图:


 

原创粉丝点击