行動裝置螢幕小、輸入法受限(鍵盤/觸控筆)、處理能力弱。MIDP 將「使用者介面」抽象為螢幕模型:每個 MIDlet 擁有一個 Display,同一時間僅顯示一個 Displayable 子類別實例。開發者只需佈局元件,捲動、焦點轉移等細節由實作廠商處理,確保跨裝置一致外觀。
| 高階 UI (Screen) | 低階 UI (Canvas) |
|---|---|
Form:表單容器,可加入 Item | Canvas:繪圖、原始鍵盤事件 |
List:單選/多選清單 | GameCanvas:雙緩衝、鍵盤狀態輪詢 |
TextBox:多行文字輸入 | 自訂遊戲畫面、動畫 |
Alert:提示/確認對話框 | 完全掌控像素級呈現 |
| 優點:開發快、跨平台一致 | 優點:靈活、效能高、適合遊戲 |
| 缺點:自訂外觀受限 | 缺點:需自行處理佈局、焦點 |
Display display = Display.getDisplay(this);
// 切換螢幕
display.setCurrent(new Form("主選單"));
// Alert 顯示後自動回歸
display.setCurrent(alert, previousScreen);
CommandListener.commandAction(Command, Displayable),對應選單、按鈕、軟鍵。Canvas.keyPressed/Released/Repeated(int keyCode)、pointerPressed/Dragged/Released(x,y)。display.setCurrent() 切換。Canvas.paint() 執行耗時運算 → 導致畫面凍結,應分離邏輯與繪圖。sizeChanged 回調 → 翻轉螢幕或來電彈出時佈局錯亂。理解螢幕模型與高低階 UI 分工,是編寫高品質、跨裝置相容 MIDP 應用的基石。