2009-08-18 70 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 */);