用于在屏幕上显示: 1.光标点击坐标 2.光标拖拽坐标 3.光标释放坐标 package TouchScreen; import javax.microedition.lcdui.Display; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class TSMIDlet extends MIDlet { public TSMIDlet() { // TODO Auto-generated constructor stub } 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 d = Display.getDisplay(this); TSCanvas tsc = new TSCanvas(this); d.setCurrent(tsc); Thread t = new Thread(tsc); t.start(); } public void destroyMIDlet(){ try { destroyApp(true); } catch (MIDletStateChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); } notifyDestroyed(); } } package TouchScreen; import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.Graphics; public class TSCanvas extends Canvas implements Runnable { private TSMIDlet midlet; private Image buffer; private Graphics bufferG;// 缓冲的画布 private int pdX;// pointerDragged X Coordinate private int pdY;// pointerDragged Y Coordinate private int prX;// pointerReleased X Coordinate private int prY;// pointerReleased Y Coordinate private int ppX;// pointerPressed X Coordiante private int ppY;// pointerPressed Y Coordinate private int localKey; private int exitCount; public TSCanvas(TSMIDlet mid) { setFullScreenMode(true); midlet = mid; buffer = Image.createImage(240, 310); bufferG = buffer.getGraphics(); pdX = pdY = prX = prY = ppX = ppY = 1000; exitCount = localKey = 0; } protected void paint(Graphics g) { g.drawImage(buffer, 0, 0, Graphics.TOP | Graphics.LEFT); } public void run() { while (true) { int dX = pdX; int dY = pdY; int rX = prX; int rY = prY; int pX = ppX; int pY = ppY; int useKey = localKey; quitCount(useKey); drawQuit(); drawBackground(); drawPointerDragged(dX, dY); drawPointerReleased(rX, rY); drawPointerPressed(pX, pY); repaint(); localKey = 0; try { Thread.sleep(100); } catch (InterruptedException ie) { } } } private void quitCount(int key) { if (key == -6) { exitCount++; if(exitCount == 2){ exitCount = 0; midlet.destroyMIDlet(); } } } private void drawQuit() { if (exitCount == 1) { bufferG.setColor(0xffffff); bufferG.drawString("Quit this App?", 120, 260, Graphics.BOTTOM | Graphics.TOP); bufferG.drawString("YES", 0, 310, Graphics.LEFT | Graphics.BOTTOM); bufferG.drawString("NO", 240, 310, Graphics.RIGHT | Graphics.BOTTOM); } } private void drawBackground() { bufferG.setColor(0); bufferG.fillRect(0, 0, 240, 310); } private void drawPointerDragged(int x, int y) { bufferG.setColor(0xffffff); bufferG.drawString("Dragged X = " + x + " Y = " + y, 120, 20, Graphics.HCENTER | Graphics.BOTTOM); } private void drawPointerReleased(int x, int y) { bufferG.setColor(0xffffff); bufferG.drawString("Released X = " + x + " Y = " + y, 120, 40, Graphics.HCENTER | Graphics.BOTTOM); } private void drawPointerPressed(int x, int y) { bufferG.setColor(0xffffff); bufferG.drawString("Pressed X = " + x + " Y = " + y, 120, 60, Graphics.HCENTER | Graphics.BOTTOM); } protected void pointerDragged(int x, int y) { pdX = x; pdY = y; } protected void pointerReleased(int x, int y) { prX = x; prY = y; } protected void pointerPressed(int x, int y) { ppX = x; ppY = y; } protected void keyReleased(int key) { localKey = key; } }