0

你好。我想在这里问你一件事。我知道这对你来说可能很容易,但对我来说可能很难。我学习新的 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);
    }
}

我想知道如何将图像更改为图像按钮(键功能)。请帮忙


我试图通过按键事件添加代码,但这让我感到困惑

然后我尝试添加图形但是..我认为它只用于画布

这是我的新代码,这是与上次结果相似的结果

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 的新手,请帮忙

4

3 回答 3

1

您可以保留按钮的某种数据结构来指示遍历顺序。然后,您可以侦听画布上的按键事件,并根据按下的键(例如,向左、向右、向上、向下、选择等)更新哪些按钮现在处于焦点(使用简单的索引到您的数据结构)。您的绘画方法可以扩展为在具有焦点的图像周围绘制某种边框。

现在,当您听到选择键按下时,您将知道哪个按钮具有焦点,因此知道要执行哪个操作。

这里更高级的问题是在每次按键后刷新(重新绘制屏幕)以更新图像等以显示哪个有焦点。您不想重绘整个屏幕,而是可以定义屏幕区域以根据哪些按钮将发生更改(即先前具有焦点的按钮和现在具有焦点的按钮)来重新绘制。

另一种选择是不使用低级画布类,而是考虑使用像 LWUIT 这样的框架,它提供按钮等和布局管理器,很像 Swing。这可能比尝试使用低级 API 绘制(从外观上看是浏览器)要容易得多。

于 2009-08-19T10:34:58.413 回答
1

您不能在 J2ME 中的 Canvas 上创建按钮,但有其他选择:

  • 使用 javax.microedition.lcdui.Form,添加一个具有外观的 ImageItem,BUTTON向 ImageItem 添加一个命令。

  • 通过覆盖 Canvas.keyPressed()、Canvas.keyreleased()、Canvas.pointerPressed() 和/或 Canvas.pointerReleased() 在 DrawImageCanvas 上使用键和/或指针事件。您甚至可以为图像添加边框,使其看起来更像一个按钮。

  • 您可能希望在 Form 中尝试使用 javax.microedition.lcdui.CustomItem 作为中间解决方案。

MIDP 规范中的所有这些类和方法都有不错的文档:

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

您可能还想查看 LWUIT 的文档。它是 Sun 发布的开源图形库。

于 2009-08-19T10:36:16.320 回答
0

Try setting the appearance mode of the ImageItem object to Item.BUTTON, e.g.

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

Also try adding a command to the ImageItem.

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

Then finally define the CommandListener:

item.setItemCommandListener(/* itemCommandListener */);
于 2009-09-06T21:00:38.957 回答