0

CustomItem を拡張する Java クラスを作成しました。

package view;

import com.sun.lwuit.Dialog;
import javax.microedition.lcdui.CustomItem;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

public class Thumb extends CustomItem {
    private Image theImage;
    public Thumb(Image photo)
    {
        super("");
        theImage = photo;
    }
    private Image createThumbnail(Image image) {
        int sourceWidth = image.getWidth();
        int sourceHeight = image.getHeight();
        int thumbWidth = 64;
        int thumbHeight = -1;

        if (thumbHeight == -1) {
            thumbHeight = thumbWidth * sourceHeight / sourceWidth;
        }

        Image thumb = Image.createImage(thumbWidth, thumbHeight);
        Graphics g = thumb.getGraphics();

        for (int y = 0; y < thumbHeight; y++) {
            for (int x = 0; x < thumbWidth; x++) {
                g.setClip(x, y, 1, 1);
                int dx = x * sourceWidth / thumbWidth;
                int dy = y * sourceHeight / thumbHeight;
                g.drawImage(image, x - dx, y - dy, Graphics.LEFT | Graphics.TOP);
            }
        }
        Image immutableThumb = Image.createImage(thumb);
        return immutableThumb;
    }
    protected int getMinContentHeight() {
        return 64 * theImage.getHeight() / theImage.getWidth();
    }

    protected int getMinContentWidth() {
        return 64;
    }

    protected int getPrefContentHeight(int width) {
        return 64 * theImage.getHeight() / theImage.getWidth();
    }

    protected int getPrefContentWidth(int height) {
        return 64;
    }

    protected void paint(Graphics g, int w, int h) {
        Image transformImage = createThumbnail(theImage);
        g.drawImage(transformImage, 0, 0, Graphics.TOP|Graphics.LEFT);
    }
    protected void pointerPressed(int x, int y)
    {
        Dialog.show("Info", "I clicked the screen !", "ok", null);
    }
}

そしてフォームに、この CustomItem から作成されたいくつかのアイテムを追加します:

fcDir = (FileConnection) Connector.open("file:///"+pRoot+photoDirectory+"/");
            if (fcDir.exists()) {
                filelist = fcDir.list("*", false);
                while (filelist.hasMoreElements()) {
                    fileName = (String) filelist.nextElement();
                    vPhotoNames.addElement(new String(fileName));
                    FileConnection fcFile = (FileConnection) Connector.open("file:///"+pRoot+photoDirectory+"/"+fileName);
                    // creation customitem
                    this.append(new Thumb(Image.createImage(fcFile.openInputStream())));
                    fcFile.close();
                }
            }
            fcDir.close();

アプリケーションを起動すると、次のようになります。1) 矢印キー (デバイスは Alcatel OT-806D です) や画面に触れてもカーソルを移動できません。2) 画像をクリックしようとすると、ダイアログが表示されるはずですが、何も起こりません!

では、なぜこれらの問題が発生するのでしょうか。

4

1 に答える 1

1

MIDP CustomItem から LWUIT ダイアログを表示しようとしていますが、これは公式にサポートされておらず、多くの創造的な方法で失敗するはずです。任意の時点で、LWUIT または LCDUI を使用する必要があります。

于 2011-06-26T06:34:39.103 に答える