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

J2ME 學習筆記(一):螢幕切換與 Displayable 傳遞技巧

     編輯:J2ME

核心概念

MIDlet 持有唯一 Display 物件,代表當前螢幕。切換畫面即呼叫 display.setCurrent(Displayable)。若在另一個類別(如自訂 Form)需切換回上一畫面,必須持有對主 MIDlet 的 Display 及前一 Displayable 的參考。

實作範例:雙畫面互切

MainMIDlet.java(主畫面)

public class MainMIDlet extends MIDlet implements CommandListener {
    private Display display;
    private Form mainForm = new Form("Welcome!!");
    private Command okCmd = new Command("OK", Command.OK, 1);
    private StringItem item = new StringItem("First Screen", "~_~");
    private Form nextScreen; // 參考下一畫面

    public MainMIDlet() {
        mainForm.append(item);
        mainForm.addCommand(okCmd);
    }

    public void startApp() {
        display = Display.getDisplay(this);
        display.setCurrent(mainForm);
        mainForm.setCommandListener(this);
    }

    public void commandAction(Command c, Displayable d) {
        if (c == okCmd) {
            nextScreen = new NextScreen(display, mainForm); // 傳遞 display 與父畫面
            display.setCurrent(nextScreen);
        }
    }
    public void pauseApp() {}
    public void destroyApp(boolean b) {}
}

NextScreen.java(次畫面)

public class NextScreen extends Form implements CommandListener {
    private Display display;
    private Displayable parent; // 上一畫面
    private Command backCmd = new Command("BACK", Command.BACK, 1);
    private StringItem item = new StringItem("SecondScreen", "~_~");

    public NextScreen(Display d, Displayable p) {
        super("NextScreen");
        display = d;
        parent = p;
        append(item);
        addCommand(backCmd);
        setCommandListener(this);
    }

    public void commandAction(Command c, Displayable d) {
        if (c == backCmd) display.setCurrent(parent); // 返回上一畫面
    }
}

關鍵點解析

  1. NextScreen 建構子接收 Display 與 Displayable parent,分別對應「當前顯示管理者」與「要返回的畫面」。
  2. 主 MIDlet 中 display.setCurrent(nextScreen) 完成切換。
  3. 返回時直接 display.setCurrent(parent),無需重建主畫面,保留狀態。
  4. 此模式可擴展為堆疊式導航(保存歷史畫面鏈)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved