按钮图像问题(Button Image Problem)

2019-08-01 14:47发布

喂。 我想在这里问东西给你。 我知道这可能是您轻松,但是这可能对我来说是困难的。 我学习新的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中新手请帮忙

Answer 1:

你可以保持某种形式的按钮表示遍历顺序的数据结构。 然后,您可以监听键按下你的画布上的事件,并根据按下哪个键(例如,左,右,上,下,选择等),你可以更新哪个按钮是现在的焦点(使用一个简单的索引你的数据结构)。 你的绘制方法可以扩展到绘制具有焦点的图像周围的一些种类的边界。

现在,当你听的选择按键,你就会知道哪个按钮具有焦点,因此要执行的操作。

更先进的问题,这里将每个按键后清爽(重绘屏幕)来更新图像等显示其具有焦点。 你不会想重绘整个屏幕,而不是你可以定义重新绘制根据屏幕上的按钮将发生变化(即按钮以前有关注,而目前具有焦点的按钮)的区域。

另一种方法是不使用低级别的帆布类,而是看使用像LWUIT一个框架,提供了许多按钮等和布局管理器,就像秋千。 这可能是比使用低级别API试图(通过它的外观浏览器)来绘制轻松了许多。



Answer 2:

不能创建在J2ME画布一个按钮,但也可以选择:

  • 使用javax.microedition.lcdui.Form,具有美观添加的ImageItem BUTTON给它添加一个命令到的ImageItem。

  • 通过overiding使用您DrawImageCanvas密钥和/或指针事件Canvas.keyPressed(),Canvas.keyreleased(),Canvas.pointerPressed()和/或Canvas.pointerReleased()。 你甚至可以将边框添加到图像,所以它看起来更像一个按钮。

  • 你可能想用一个表单内javax.microedition.lcdui.CustomItem作为中介的解决方案进行试验。

没有为所有这些类和方法在MIDP规范体面的文件:

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

你可能也想看看LWUIT的文档。 它是由Sun公司发布的一个开源的图形库



Answer 3:

尝试的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 */);


文章来源: Button Image Problem