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

J2ME Canvas 實作練習:鍵盤事件與畫面切換

     編輯:Java 相關知識

程式架構

  • Canvas3let:主 MIDlet,管理 TextBox(輸入畫面)與 MyCanvas(繪圖畫面)切換
  • MyCanvas:繼承 Canvas,處理按鍵事件與重繪

關鍵程式碼片段


// 主 MIDlet 初始化
public Canvas3let() {
    exitCommand = new Command("退出", Command.EXIT, 1);
    okCommand = new Command("進入", Command.OK, 1);
    showImage = Image.createImage("/sohu.png");
    showAlert = new Alert("Loading...", "載入中……", showImage, AlertType.INFO);
    aTextBox = new TextBox("KeyPress Test", "按下進入鍵...", 25, TextField.ANY);
    aTextBox.addCommand(exitCommand);
    aTextBox.addCommand(okCommand);
    aTextBox.setCommandListener(this);
}

// 按鍵處理
public void keyPressed(int keyCode) {
    keyName = getKeyName(keyCode); // 取得按鍵名稱
    repaint(); // 觸發重繪
}

// 畫面繪製
public void paint(Graphics g) {
    g.setColor(0xFFFFFF); g.fillRect(0, 0, getWidth(), getHeight()); // 清背景
    g.setColor(0); g.drawString(keyName, 100, 100, Graphics.LEFT | Graphics.BOTTOM);
}

// hideNotify:畫面移除時自動呼叫
protected void hideNotify() {
    aDisplay.setCurrent(showAlert, aTextBox); // 顯示 Alert 後回文字輸入框
}

生命週期方法對照

方法觸發時機
showNotify()Canvas 顯示在螢幕之前
hideNotify()Canvas 從螢幕移除後立即呼叫
paint()需要重繪時(含 repaint() 觸發)

重點總結

  1. keyPressed(int keyCode) 捕捉實體按鍵,配合 getKeyName() 取得可讀名稱
  2. repaint() 排程重繪,實際繪製在 paint(Graphics) 中
  3. 命令監聽器 CommandListener 處理軟鍵選單事件
  4. hideNotify() 適合釋放資源或切換顯示畫面
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved