在 CodeWarrior中,它包含了摩托羅拉的SDK,它實現了CLDC和MIDP 1.0。它所實現的CLDC類庫有Java.io.*、Java.lang.*、Java.util.*和 Javax.microedition.io.*,實現的MIDP類庫有Javax.microedition.lcdui.*、 Javax.microedition.rms和Javax.micromedition.midlet。
我們在PC環境下編寫的嵌進在浏覽器中的Java程序叫做Applet,編寫的程序必需要從Applet類擴大自己的類。而為手機這類移動信息設備編寫的 KJava程序叫做MIDlet,程序必需要從MIDlet類擴大自己的類。一個MIDlet程序具備如下的典范結構:
當程序被啟動時,startApp()被系統調用。(當程序剛開端運行時有啟動過程,程序被暫停後也可以被再次啟動)。當程序被暫時結束運行時,pauseApp()被調用。當程序履行結束時destroyApp()被調用。我們可以根據實際情況在各函數中進行相應的處理。
在摩托羅拉SDK中沒有AWT或者SWING,由於它們的實現會耗費太多的資源,摩托羅拉SDK只是在Javax.microedition.lcdui中實現了基於LCD的一些比擬簡略的設計用戶界面的功效。SDK中定義了各種Displable類(如Form),程序中當前顯示的畫面必需是某個 Displable的實例,在該實例中可以再放置按鈕、文本編纂框、單選框等UI。
3. 舉例
下面是用KJava編寫的一個可以在A6288型手機上運行的簡略的例子。具體程序如下
import Java.io.*;
import Javax.microedition.lcdui.*;
import Javax.microedition.midlet.*;
public class HelloWorld extends MIDlet implements CommandListener {
private MainCanvas myCanvas;
private Display myDisplay;
private Command c1, c2, c3;
HelloWorld() {
myCanvas = new MainCanvas();
myCanvas.addCommand(c1 = new Command("First", Command.SCREEN, 1));
myCanvas.addCommand(c2 = new Command("Second", Command.SCREEN, 1));
myCanvas.addCommand(c3 = new Command("Third", Command.SCREEN, 1));
myCanvas.setCommandListener(this);
myDisplay = Display.getDisplay(this);
myDisplay = Display.getDisplay(this);
}
public void startApp() throws MIDletStateChangeException {
myCanvas.setUp("first");
myDisplay.setCurrent(myCanvas);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
myCanvas.setUp(c.getLabel());
}
class MainCanvas extends Canvas {
String ts;
MainCanvas() {
super();
ts = new String("first");
}
public void setUp(String s) {
ts = new String(s);
}
public void paint(Graphics g) {
g.setColor(0xFFFFFF);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0);
g.drawString("Current is the " + ts, getWidth() / 2, 60,
Graphics.HCENTER | Graphics.TOP);
}
}
}
程序運行後,可以根據用戶選擇的不同菜單項顯示不同的內容。