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

J2ME 學習筆記(四):MIDP API 核心套件與行動銀行雙畫面實作

     編輯:Java 程式設計入門

前言

詳細介紹 MIDP 四大核心套件功能,並以「SaveMyMoney 行動銀行」雙畫面範例示範:畫面一顯示歡迎訊息與跑馬燈,畫面二動態顯示當前日期、時間、總記憶體、可用記憶體。

一、MIDP 四大核心套件

套件功能說明
javax.microedition.midlet最內層,僅含 MIDlet 類,提供應用基礎生命週期支援。
javax.microedition.io含 HttpConnection,MIDlet 透過 HTTP 存取 Web 資料。
javax.microedition.lcdui液晶顯示 UI,功能對應 java.awt 但針對小螢幕手持裝置優化。
javax.microedition.rms記錄管理系統,支援資料庫儲存/檢索 MIDlet 資料。

二、實作範例:雙畫面資訊顯示

需求

  • 畫面一:歡迎訊息 + 跑馬燈「Welcome to the World of Mobile Banking!」,右鍵「Info」進入畫面二,左鍵「Exit」離開。
  • 畫面二:顯示當前月/日/年、時:分:秒、總記憶體、可用記憶體,左鍵「Back」返回,右鍵「Exit」離開。

核心程式碼

public class MB extends MIDlet implements CommandListener {
    private Display display;
    private Form form1, form2;
    private Ticker ticker1;
    private static final Command okCmd = new Command("Info", Command.OK, 1);
    private static final Command backCmd = new Command("Back", Command.BACK, 0);
    private static final Command exitCmd = new Command("Exit", Command.STOP, 2);

    public void startApp() throws MIDletStateChangeException {
        display = Display.getDisplay(this);
        ticker1 = new Ticker("Welcome to the World of Mobile Banking!");

        form1 = new Form("SaveMyMoney");
        form1.append(new StringItem("Welcome to SaveMyMoney Bank!", ""));
        form1.addCommand(exitCmd);
        form1.addCommand(okCmd);
        form1.setCommandListener(this);
        form1.setTicker(ticker1);

        form2 = new Form("INFORMATION");
        Calendar cal = Calendar.getInstance();
        String month[] = {"January","February","March","April","May","June",
                          "July","August","September","October","November","December"};
        String dateStr = cal.get(Calendar.DAY_OF_MONTH) + " " + month[cal.get(Calendar.MONTH)] + " " + cal.get(Calendar.YEAR);
        String timeStr = cal.get(Calendar.HOUR_OF_DAY) + ":" + cal.get(Calendar.MINUTE) + ":" + cal.get(Calendar.SECOND);
        Runtime rt = Runtime.getRuntime();
        String totalMem = Long.toString(rt.totalMemory());
        String freeMem = Long.toString(rt.freeMemory());

        form2.append(new StringItem(" ", "DATE: " + dateStr));
        form2.append(new StringItem(" ", "TIME: " + timeStr));
        form2.append(new StringItem(" ", "Total Memory: " + totalMem));
        form2.append(new StringItem(" ", "Free Memory: " + freeMem));
        form2.addCommand(exitCmd);
        form2.addCommand(backCmd);
        form2.setCommandListener(this);

        display.setCurrent(form1);
    }

    public void pauseApp() {}
    public void destroyApp(boolean uc) { notifyDestroyed(); }

    public void commandAction(Command c, Displayable d) {
        String lbl = c.getLabel();
        if ("Exit".equals(lbl)) destroyApp(true);
        else if ("Back".equals(lbl)) display.setCurrent(form1);
        else display.setCurrent(form2); // Info
    }
}

關鍵技術點

  • Calendar 取得日期時間,配合月份陣列本地化。
  • Runtime.getRuntime() 監控記憶體使用狀況。
  • Command 語意類型 (OK/BACK/STOP) 決定軟鍵映射優先權。
  • 畫面切換集中於 commandAction,狀態由表單實例保持。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved