不使用高层 UI (Form/List),直接用 Canvas 绘制文字与图形,理解最核心渲染路径。
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
// 绘制画布
class HelloCanvas extends Canvas {
public HelloCanvas() {}
protected void paint(Graphics g) {
// 1. 清屏 (白底)
g.setColor(0xFFFFFF);
g.fillRect(0, 0, getWidth(), getHeight());
// 2. 绘制图形 (红线)
g.setColor(0xFF0000);
g.drawLine(10, 10, 50, 50);
// 3. 绘制文字 (黑字,左上角)
g.setColor(0x000000);
g.drawString("Hello World!", 0, 0, Graphics.LEFT | Graphics.TOP);
}
}
// MIDlet 入口
public class HelloWorld extends MIDlet implements CommandListener {
private HelloCanvas canvas;
private Display display;
public HelloWorld() {
canvas = new HelloCanvas();
}
protected void startApp() {
display = Display.getDisplay(this);
display.setCurrent(canvas);
canvas.repaint(); // 触发首次 paint
}
protected void pauseApp() {
// 释放资源、暂停线程
}
protected void destroyApp(boolean unconditional) {
// 彻底清理
}
public void commandAction(Command c, Displayable d) {
// 无命令,预留接口
}
}
Canvas 實例,不做顯示邏輯。Display 單例,setCurrent(canvas) 將畫布推上螢幕,repaint() 排程首幀繪製。| 項目 | 說明 |
|---|---|
| 無高層 UI | 純 Canvas,完全掌控像素 |
| 無 Command | 實作 CommandListener 僅為滿足介面,實際無軟鍵選單 |
| 清屏必做 | fillRect(0,0,w,h) 覆蓋全螢幕 |
| 座標系 | (0,0) 左上角,X 右、Y 下 |
| 錨點 | LEFT|TOP 文字基準點在左上 |