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);
    }
}

画像を画像ボタン(キー機能)に変更する方法を知りたいです。助けてください


キープレスイベントでコードを追加しようとしましたが、混乱します

それから GRAPHIC を追加しようとしましたが、キャンバスでのみ使用されたと思います

これは私の新しいコードです。これは最後の結果と同様の結果です

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

走査順序を示すボタンのある種のデータ構造を保持できます。次に、キャンバスでキーが押されたイベントをリッスンし、押されたキー (左、右、上、下、選択など) に基づいて、現在フォーカスされているボタンを更新できます (単純なインデックスを使用して、データ構造)。ペイント メソッドを拡張して、フォーカスのある画像の周囲に何らかの境界線を描画できます。

ここで、選択キーの押下を聞くと、どのボタンにフォーカスがあるか、つまりどのアクションを実行するかがわかります。

ここでのより高度な問題は、キーを押すたびにリフレッシュ(画面の再描画)して画像を更新し、どれにフォーカスがあるかを示すことです。画面全体を再描画するのではなく、どのボタンが変更されるかに基づいて再描画する画面の領域を定義できます (つまり、以前にフォーカスがあったボタンと現在フォーカスがあるボタン)。

もう 1 つの方法は、低レベルのキャンバス クラスを使用せず、ボタンなどを提供する LWUIT のようなフレームワークと、Swing のようなレイアウト マネージャーの使用を検討することです。これは、低レベルの API を使用して描画するよりもはるかに簡単です (見た目はブラウザーです)。

于 2009-08-19T10:34:58.413 に答える
1

J2ME では Canvas にボタンを作成できませんが、別の方法があります。

  • javax.microedition.lcdui.Form を使用し、外観BUTTONを備えた ImageItem を追加し、コマンドを 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

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 */);
于 2009-09-06T21:00:38.957 に答える