MIDP 雖屬受限框架,仍提供完整 UI 元件集。本文條列 10 大核心元件功能,並以「電話日曆」完整範例示範 DateField、命令處理、項目狀態監聽實作。
| 元件 | 功能說明 |
|---|---|
Alert | 顯示異常或錯誤訊息,可設定類型、圖示、超時時間。 |
Choice | 從預設選項單選/多選的介面 (介面)。 |
ChoiceGroup | 相關選項群組,可放入 Form。 |
Form | UI 元件容器,支援佈局管理。 |
List | 選項列表,支援隱含/單選/多選模式。 |
StringItem | 唯讀字串顯示,可作標籤或內容。 |
TextBox | 全螢幕文字輸入/編輯畫面。 |
TextField | 單行文字輸入欄位,可放入 Form。 |
DateField | 可編輯日期/時間元件,支援 DATE、TIME、DATE_TIME 模式,可放入 Form。 |
Ticker | 跑馬燈文字捲動顯示,可附加於任何 Displayable。 |
DateField 供用戶選擇日期。ItemStateListener 監聽日期變更(此處略)。import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;
public class PhoneCalendar extends MIDlet implements CommandListener, ItemStateListener {
private Command exitCommand;
private Display display;
private Form displayForm;
private DateField date;
public PhoneCalendar() {
display = Display.getDisplay(this);
exitCommand = new Command("Exit", Command.SCREEN, 1);
date = new DateField("Select date", DateField.DATE);
}
public void startApp() {
displayForm = new Form("Quick Calendar");
displayForm.append(date);
displayForm.addCommand(exitCommand);
displayForm.setCommandListener(this);
displayForm.setItemStateListener(this);
display.setCurrent(displayForm);
}
public void itemStateChanged(Item item) {
// 取得變更後的日期值: Date d = date.getDate();
// 後續業務邏輯...
}
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
public void commandAction(Command c, Displayable s) {
if (c == exitCommand) {
destroyApp(false);
notifyDestroyed();
}
}
}
DateField 結合 java.util.Calendar 可實現完整行事曆邏輯(農曆、農曆轉換需自行實作)。List 搭配 Choice.IMPLICIT 可快速建立主選單。Gauge 非互動模式可作進度指示器,互動模式可作滑桿輸入。Canvas 覆寫 paint(Graphics),屬低階 UI。