2009-08-18 129 views
0

hallo。我想在這裏問你一些事情。我知道這對你來說可能很容易,但這對我來說可能很難。我學習新的J2ME。我想知道編程語言的基礎知識。我有這樣的情況:按鈕圖像問題

class DrawImageCanvas extends Canvas { 

    static Image image; 
    static Image image2; 
    static Image image3; 
    static Image image4; 
    static Image image5; 
    static Image image6; 
    static String string; 

    int count; 

    public void paint(Graphics g) { 
     int width = getWidth(); 
     int height = getHeight(); 

     // Fill the background using black 
     g.setColor(0xefffff); 
     g.fillRect(0, 0, width, height); 

     // Load an image from the MIDlet resources 
     if (image == null && image2 == null && image3 == null && image4 == null && image5 == null && image6 == null) { 
      try { 
       image = Image.createImage("/http.png"); 
       image2 = Image.createImage("/Back.png"); 
       image3 = Image.createImage("/next.png"); 
       image4 = Image.createImage("/refresh.png"); 
       image5 = Image.createImage("/stop.png"); 
       image6 = Image.createImage("/Bookmark.png"); 
       string = new String("Disini tempat halaman web ditampilkan"); 
      } catch (IOException ex) { 
       g.setColor(0xffffff); 
       g.drawString("Failed to load image!", 0, 0, Graphics.TOP | Graphics.LEFT); 
       return; 
      } 
     } 


     g.drawImage(image, 5, 5, Graphics.TOP | Graphics.LEFT);  
     g.drawImage(image2, 90, 5, Graphics.TOP | Graphics.LEFT); 
     g.drawImage(image3, 120, 5, Graphics.TOP | Graphics.LEFT); 
     g.drawImage(image4, 150, 5, Graphics.TOP | Graphics.LEFT); 
     g.drawImage(image5, 180, 5, Graphics.TOP | Graphics.LEFT); 
     g.drawImage(image6, 210, 5, Graphics.TOP | Graphics.LEFT); 
     g.drawString(string, 5, 36, Graphics.TOP | Graphics.LEFT); 
    } 
} 

我想知道如何將圖像更改爲圖像按鈕(按鍵功能)。請幫助


我試圖用按鍵事件中添加代碼,但它讓我迷惑

然後我嘗試添加GRAPHIC但是..我認爲這只是在畫布

使用,這是我的新的代碼,這是simmilar結果作爲最後的結果

public void startApp() { 
    display = Display.getDisplay(this); 
    exit = new Command("Exit", Command.EXIT, 1); 
    form = new Form("");  
    form.addCommand(exit); 
    form.setCommandListener(this); 
    try { 
     Image image = Image.createImage("/http.png"); 
     Image image2 = Image.createImage("/Back.png"); 
     Image image3 = Image.createImage("/next.png"); 
     Image image4 = Image.createImage("/refresh.png"); 
     Image image5 = Image.createImage("/stop.png"); 
     Image image6 = Image.createImage("/Bookmark.png"); 
     form.append(new ImageItem(null, image, ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT, null)); 
     form.append(new ImageItem(null, image2, ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT, null)); 
     form.append(new ImageItem(null, image3, ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT, null)); 
     form.append(new ImageItem(null, image4, ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT, null)); 
     form.append(new ImageItem(null, image5, ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT, null)); 
     form.append(new ImageItem(null, image6, ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_LEFT | ImageItem.LAYOUT_NEWLINE_AFTER, null)); 

     display.setCurrent(form); 
    }catch (java.io.IOException e){ 
     System.err.println(e); 
    } 
    display.setCurrent(form); 
    } 

但問題是..我不知道如何使圖像按鈕。 我是J2me的新手,請幫忙

+0

的StackOverflow是不是一個論壇;如果您有新問題,請提出一個新問題。如果你想在你的問題中包含更多信息,請[編輯](http://stackoverflow.com/posts/1295877/edit)。如果您想與其中一位已回答的人進行互動,您可以留下評論。 – Will 2011-03-25 13:37:43

回答

1

你可以保留某種按鈕的數據結構,指示遍歷順序。然後,您可以聽取畫布上的按鍵事件,並根據按下哪個按鍵(例如,向左,向右,向上,向下,選擇等),您可以更新哪個按鈕現在處於焦點狀態(使用簡單索引進入您的數據結構)。您的繪畫方法可以擴展爲在具有焦點的圖像周圍繪製某種邊框。

現在,當您聽取選擇鍵時,您將知道哪個按鈕具有焦點並因此執行哪個動作。

更高級的問題在這裏將刷新(重新繪製屏幕)後每次按鍵更新圖像等顯示哪些焦點。您不希望重新繪製整個屏幕,而是可以根據哪些按鈕將發生更改(即先前具有焦點的按鈕和現在具有焦點的按鈕)來定義要重新繪製的區域。

另一種選擇是不使用低級畫布類,而是使用像LWUIT這樣的框架來提供按鈕等和佈局管理器,就像Swing一樣。這可能比試圖使用低級API繪製(瀏覽器的外觀)要容易得多。

+0

請切我的代碼 – 2009-09-05 18:45:03

+0

我仍然得到這種情況下的堆棧..我想發送我的代碼到您的郵件。我需要幫助你。 – 2009-09-13 17:52:32

+0

哪部分你有問題?你有沒有在我的其他答案中嘗試我的建議? – DaveJohnston 2009-09-14 08:46:02

1

不能創建在J2ME畫布一個按鈕,但也可以選擇:

  • 使用javax.microedition.lcdui.Form,添加的ImageItem與外觀BUTTON它,添加一個命令到ImageItem。 (),Canvas.keyReleased(),Canvas.pointerPressed()和/或Canvas.pointerReleased()在DrawImageCanvas上使用鍵和/或指針事件。您甚至可以爲圖像添加邊框,使其看起來更像是一個按鈕。

  • 您可能想要在Form中使用javax.microedition.lcdui.CustomItem作爲中介解決方案。

沒有爲所有這些類和方法在MIDP規範體面的文件:

http://www.jcp.org/en/jsr/detail?id=118

你可能也想看看LWUIT的文檔。它是由Sun發佈的開源圖形庫。

+0

請切我的代碼 – 2009-09-05 18:44:28

0

嘗試將ImageItem對象的外觀模式設置爲Item.BUTTON,例如,

ImageItem item = new ImageItem(null, image, ImageItem.LAYOUT_LEFT, null, Item.BUTTON); 

也嘗試添加一個命令到ImageItem。

item.setDefaultCommand(new Command("Back", Command.ITEM, 1); 

後來終於確定了CommandListener:

item.setItemCommandListener(/* itemCommandListener */);