下面这个小程序是参考网上的代码写的,主要功能是通过上下左右键控制屏幕上字符的移动,我想这是J2ME最基础的东西。下面是代码包括两个类.M3GCanvas ExampleGameCanvasMidlet. import javax.microedition.lcdui.Display; import javax.microedition.midlet.MIDlet; public class ExampleGameCanvasMidlet extends MIDlet { private Display display; protected void startApp() { // TODO Auto-generated method stub display = Display.getDisplay(this); M3GCanvas mCanvas = new M3GCanvas(); mCanvas.start(); display.setCurrent(mCanvas); } public Display getDisplay() { return display; } protected void pauseApp() { // TODO Auto-generated method stub } protected void destroyApp(boolean unconditional) { // TODO Auto-generated method stub exit(); } public void exit() { System.gc(); destroyApp(false); notifyDestroyed(); } } import javax.microedition.lcdui.*; import javax.microedition.lcdui.game.*; public class M3GCanvas extends GameCanvas implements Runnable { /** * @param args */ private boolean isPlay; private long delay; private int currentX, currentY; private int width; private int height; public M3GCanvas() { super(true); width = getWidth(); height = getHeight(); currentX = width / 2; currentY = height / 2; delay = 20; } public void start() { isPlay = true; Thread t = new Thread(this); t.start(); } public void stop() { isPlay = false; } public void run() { Graphics g = getGraphics(); while (isPlay == true) { input(); drawScreen(g); try { Thread.sleep(delay); } catch (InterruptedException e) { // TODO: handle exception } } } private void input() { int KeyStates = getKeyStates(); if ((KeyStates & LEFT_PRESSED) != 0) { currentX = Math.max(0, currentX - 1); } if ((KeyStates & RIGHT_PRESSED) != 0) { if (currentX + 5 < width) { currentX = Math.min(width, currentX + 1); } } if ((KeyStates & UP_PRESSED) != 0) { currentY = Math.max(0, currentX - 1); } if ((KeyStates & DOWN_PRESSED) != 0) { if (currentX + 10 < height) { currentY = Math.min(height, currentY + 1); } } } private void drawScreen(Graphics g) { g.setColor(0xffffff); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(0x0000ff); g.drawString("forrest", currentX, currentY, Graphics.TOP | Graphics.LEFT); flushGraphics(); } }