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

J2ME 學習筆記 (一):環境搭建、Hello World、MIDlet 生命週期與核心 UI 元件

     編輯:J2ME

J2ME 學習筆記 (一):從零開始建置開發環境並掌握核心基礎

記錄 J2ME 入門學習全過程:軟體安裝、WTK 專案建立、Hello World 實作、MIDlet 生命週期、系統屬性查詢、記憶體監控、List/Form/Canvas 核心 UI 元件用法,含中文顯示測試與模擬器選擇建議。

1. 開發環境搭建 (Windows XP + JDK 1.3.0 + Tomcat 4.0 + WTK 1.0.3 Beta)

  1. 安裝 JDK 1.3.0 (建議版本,1.2 太舊、1.4 不穩)。或安裝含 JDK 的 JBuilder 5.0。
  2. 安裝 WTK 1.0.3 Beta,指定 JDK 目錄。
  3. 安裝 Tomcat 3.2.3/4.0 做伺服器端 (JSP/Servlet),配置後測試 JSP 運行。

工具組合推薦

  • WTK + JDK + EditPlus/UltraEdit:免費、輕量、標準、易上手。「重劍無鋒,大巧不工」。
  • IBM VisualAge Micro Edition:介面複雜、非綠色、不推薦。
  • CodeWarrior for Java 6.0:IDE 強大、類 VS、適合中階、收費 (30 天試用)。
  • JBuilder + MobileSet:功能全但配置繁瑣。

2. WTK 目錄結構與專案建立

WTK_HOME/
├── apps/           # 專案與範例
│   ├── fancy/      # 自建專案
│   │   ├── src/          # 原始碼 (編譯輸入)
│   │   │   └── fancy/test/HelloWorld.java
│   │   ├── classes/      # 編譯輸出 .class
│   │   ├── bin/          # 打包輸出 .jar/.jad
│   │   ├── res/          # 資源檔 (圖片等)
│   │   ├── lib/          # 空
│   │   ├── tmpclasses/   # classes 鏡像
│   │   └── tmplib/       # lib 鏡像
│   ├── UIDemo/     # UI 範例
│   └── example/    # 圖形範例
├── bin/            # WTK 執行檔
├── docs/           # 文件
├── lib/            # MIDP API
└── wtklib/         # WTK 內部類庫

建立專案:KToolbar → New Project → Project Name: fancy, MIDlet Class: fancy.test.HelloWorld → 確定。

3. Hello World 完整代碼與解析

package fancy.test;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloWorld extends MIDlet implements CommandListener {
    private Display display;
    private Form form;
    private Command exitCmd = new Command("Exit", Command.EXIT, 1);

    public HelloWorld() {
        display = Display.getDisplay(this); // 建構子取得 Display
    }
    public void startApp() {
        form = new Form("Hello World");
        form.append("Hello World!\n");
        form.addCommand(exitCmd);
        form.setCommandListener(this);
        display.setCurrent(form);
    }
    public void pauseApp() { display.setCurrent(null); form = null; }
    public void destroyApp(boolean u) {}
    public void commandAction(Command c, Displayable d) {
        if (c == exitCmd) { destroyApp(false); notifyDestroyed(); }
    }
}

關鍵點

  • 繼承 MIDlet、實作 CommandListener。
  • 建構子呼叫 Display.getDisplay(this) 取得顯示管理器。
  • startApp() 建立 UI、註冊命令、設定監聽、顯示。
  • commandAction 統一處理命令 (Exit → 銷毀退出)。
  • 生命週期:建構子 → startApp → 事件迴圈 → commandAction → pauseApp → destroyApp。

4. 核心 API 包速查

  • javax.microedition.lcdui:UI (Command, Form, Canvas, List, Alert...)
  • javax.microedition.rms:記錄管理 (持久化)
  • javax.microedition.midlet:MIDlet 生命週期
  • javax.microedition.io:網路 (HttpConnection, SocketConnection...)
  • java.io.*, java.lang.*, java.util.*:核心精簡包

5. 中文顯示測試

模擬器通常正常,實機可能亂碼 (編碼不匹配)。測試程式 Poem.java 在 Form append 多行詩詞驗證。

6. 系統屬性查詢 (Prop.java)

System.getProperty("microedition.configuration"); // CLDC-1.0
System.getProperty("microedition.profiles");      // MIDP-1.0
System.getProperty("microedition.platform");      // 裝置型號
System.getProperty("microedition.locale");        // zh-CN
System.getProperty("microedition.encoding");      // GBK
// 核心 java.* 屬性 (version, vendor 等) 在 J2ME 中多為 null

注意:J2ME System 類無 getProperties() 方法,多數標準屬性不支援。

7. 記憶體監控 (Memory.java)

Runtime rt = Runtime.getRuntime();
long total = rt.totalMemory(); // 總堆疊
long free = rt.freeMemory();   // 可用
// J2ME Runtime 無 exec() 等執行外部程式功能

8. List 選單元件

List list = new List("Choose URL", Choice.EXCLUSIVE); // 單選
list.append("www.pku.edu.cn", null); // 第二參數為 Image 圖示
list.append("www.yahoo.com", null);
list.addCommand(exitCmd);
list.setCommandListener(this);
display.setCurrent(list);
  • Choice.EXCLUSIVE:單選 (圓形單選鈕)。
  • Choice.MULTIPLE:多選 (方形核取方塊)。
  • append(String, Image):圖示可為 null。
  • 命令註冊/監聽與 Form 相同。

9. 模擬器選擇建議

WTK 內建 6 種。推薦 RIM Java Handle (螢幕大、視覺佳),但開發時須牢記實機螢幕尺寸差異。KToolbar 可設定預設模擬器 (Default Device Selection)。

10. 專案配置新增 MIDlet

每新增一個 MIDlet 類別,需在 KToolbar Settings → MIDlets 面板 Add:
MIDlet名稱 | 圖示png | 完整類別名 (如 fancy.test.Poem) → OK → 重新 Build/Run。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved