首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

J2ME HelloWorld 极简实现:Canvas 绘制版与 MIDlet 生命周期最小模型

     編輯:J2ME

极简 HelloWorld (Canvas 版)

不使用高层 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) {
        // 无命令,预留接口
    }
}

核心流程解析

  1. 建構子:建立 Canvas 實例,不做顯示邏輯。
  2. startApp():取得 Display 單例,setCurrent(canvas) 將畫布推上螢幕,repaint() 排程首幀繪製。
  3. paint(Graphics):系統在事件執行緒自動回調,開發者實作繪圖邏輯。
  4. pauseApp()/destroyApp():生命週期鉤子,資源管理關鍵點。

最小模型關鍵點

Eclipse + WTK 2.2 運行步驟

  1. 安裝 JDK → WTK 2.2 → Eclipse + EclipseME。
  2. New → J2ME Midlet Suite → 專案名 HelloWorld,目標 MIDP 2.0/CLDC 1.1。
  3. New → J2ME Midlet → 類名 HelloWorld。
  4. 貼上代碼,Run As → Emulated J2ME Midlet。
  5. 模擬器顯示白底紅斜線 + 黑字 "Hello World!"。

常見問題

  • ❌ 模擬器空白:忘記 repaint() 或 setCurrent()。
  • ❌ 文字不見:顏色與背景同色、座標超出螢幕、錨點錯誤。
  • ❌ 紅線不見:drawLine 座標超出 getWidth()/getHeight()。
  • ✅ 真機測試:JAR/JAD 複製到手機安裝,驗證顏色/字體/尺寸適配。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
項目說明
無高層 UI純 Canvas,完全掌控像素
無 Command實作 CommandListener 僅為滿足介面,實際無軟鍵選單
清屏必做fillRect(0,0,w,h) 覆蓋全螢幕
座標系(0,0) 左上角,X 右、Y 下
錨點LEFT|TOP 文字基準點在左上