2012-07-01 40 views
0

我是一個網點開發者。最近被迫在j2me上做了一些事情。在j2me畫布表單中使用事件?

我們在j2me中使用短信文本消息的應用程序,並根據這些短信製作不同的用戶界面。在此應用程序表單中使用Canvas手動創建。

在每個畫布中有幾個操作(通過用戶選擇不同選項的可執行文件)。其中一些operation create new canvas(類似於多表單顯示)。

是否有解決方案在每個畫布窗體中定義事件,然後調用這樣一些操作(如創建新畫布)後。

更多信息:

例如,我有吹代碼(帆布表格):

public void keyPressed(int key) { 
     if (key == -3) { 
      // call OK-event 
     } 
    } 

這意味着當像用戶輸入特定鍵時,事件調用回鹼基midlet。(在這種情況下,Canvas-Formmidlet在不同的java類中)。

點網做到這一點,我們在Canvas-Form定義事件,然後調用它。此外,我們處理該事件在midlet-class和編寫自己的代碼int值處理法

所以我的問題是怎麼做的同樣的事情,是在J2ME中?

越來越多的附加信息(更新2)

我的關於Java和J2ME知識小於這個:)藻類知識。所以也許我的問題似乎很荒謬。但我問題具有以下幾個部分:

1)定義事件(我不知道如何)
2)呼叫事件(其中我寫的代碼樣本中)
3)call OK-event意見處理事件方法(我不知道如何!)

我的搜索,我看到很多例子如何定義事件與命令。但是在畫布中,我應該定義Command來做到這一點,或者不需要Command,因爲我在畫布上繪製了按鈕。我希望有人能夠用這個描述理解我的問題。

,希望能夠防止Downvotes :)

+0

你的代碼示例缺少日誌記錄:右上方if(key == -3)添加類似於System.out.println(「keyPressed [」+ key +「]」)''並重新運行測試在測試過程中查看仿真器控制檯,按下的按鍵消息將會出現在那裏) – gnat

回答

3

這是很容易做到的。畫布可以聽按鍵和指針事件以及命令。您需要在API中定義的相應方法中實施操作

如果你有興趣,在Canvas API documentation找到更多的細節。

要創建新的畫布也很容易,因爲這些都是普通Java對象,沒有magic.You似乎大多活躍在C#中,期望它很像你創建C#對象的實例。

唯一值得記住的細節是,爲了使畫布(或任何Displayable就此而言)可見,您需要一個與您的應用程序相對應的Display實例。獲得該實例的唯一方法是從擴展了MIDlet的類 - 從用作MIDP應用程序入口點的類。

您必須在那裏獲得Display實例,並進一步確保它在您需要的任何地方都可用。該實例也是一個普通的Java對象,非常類似於C#對象,並且暴露它的方式不是特定於MIDP的。

如果您需要了解更多的細節,考慮也在


學習教程和API文檔參考有關問題的更新所提供的代碼片段,找出發生了什麼的方法是添加適當的日誌記錄並在仿真器中重新測試它,查看emul ator console當你按下按鍵時。

public void keyPressed(int key) { 
     // add logging here: 
     System.out.println("keyPressed [" + key + "]"); 
     if (key == -3) { 
      // add logging here: 
      System.out.println("calling OK-event"); 
      // call OK-event 
     } 
} 

對於示例代碼,檢查的lcdui標籤的wiki,有一個參考,以「MIDP事件處理」的教程,在EventEx3.java。在lcdui標籤wiki中列出的另一個值得關注的教程是「J2ME教程:用戶界面與MIDP 2.0」,使用低級API - 也有示例代碼。

+0

gnat謝謝,'你很好幫助'。但是我沒有在創建畫布或顯示它們的事件上遇到問題。請接受我對錯誤描述問題的道歉。你可以爲事件部分製作一些示例代碼(當從畫布調用特定事件中獲取鍵時)! – Rev

+0

@Rev只是顯示你有問題的代碼([最好在單獨的問題](http://meta.stackexchange.com/questions/43478「在SO,他們不喜歡變色龍的問題」)) 。有關示例代碼,請查看'lcdui'標記wiki,在'EventEx3.java'中有一個對「MIDP事件處理」教程的引用,來自canvas調用特定event_ – gnat

+0

的_get鍵感謝您的幫助:)。我更新我的問題(我會等待你的回答)。此外,我尋找的樣本,以確保這是解決方案 – Rev