基於MIDP 2.0,詳細講解高級UI(Form、List等)事件處理核心:Command封裝動作信息,CommandListener響應命令動作,ItemStateListener監聽交互項狀態變化。附雙界面導航完整示例(輸入界面動態顯示/隱藏文本框、顯示界面返回)。
new Command("標簽", 類型, 優先級),類型如EXIT、ITEM、BACK,設備據此佈局軟鍵。commandAction(Command c, Displayable d),判斷命令與界面執行業務邏輯並切換顯示。itemStateChanged(Item item),響應TextField輸入、ChoiceGroup選擇變更、Gauge調整、DateField修改等。HighLevelMIDlet:管理Display、兩個界面(MainUI輸入、DisplayUI顯示)實例,啟動顯示MainUI。MainUI extends Form implements CommandListener, ItemStateListener:包含inputField、ChoiceGroup click、動態inputField2、Display命令。itemStateChanged根據ChoiceGroup選中狀態動態append/delete第二輸入框。commandAction取輸入文本傳給DisplayUI並切換顯示。DisplayUI extends Form implements CommandListener:包含StringItem顯示輸入內容、Back命令返回MainUI。// MainUI 動態顯示/隱藏 inputField2
public void itemStateChanged(Item arg0) {
if (arg0 == choice) {
if (choice.isSelected(0)) index = this.append(inputField2);
else this.delete(index);
}
}
// 切換到 DisplayUI
public void commandAction(Command c, Displayable d) {
if (c == cmd) {
midlet.getDisplayUI().setInput(inputField.getString());
midlet.getDisplay().setCurrent(midlet.getDisplayUI());
}
}
// DisplayUI 返回
public void commandAction(Command c, Displayable d) {
if (c == backCommand) midlet.getDisplay().setCurrent(backUI);
}
純Command導航代碼分散、界面切換邏輯耦合。下一篇將引入MVC模式分離界面、控制器與模型,解決導航複雜度問題。