2009-08-18 7 views
0

hallo. Ich möchte dich hier etwas fragen. Ich weiß, dass dies leicht für Sie sein kann, aber das kann für mich schwierig sein. Ich lerne neue J2ME. Ich möchte die Grundlagen der Programmiersprachen wissen. Ich habe einen Fall wie folgt aus:Button Bild Problem

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

ich wissen will, wie kann ich das Bild ändern, ein Bild-Taste (Tastenfunktion) zu sein. bitte helfen


ich versucht habe Code mit Tastendruckereignis hinzuzufügen, aber es mich verwirrt machen

dann versuche ich GRAFIK hinzufügen, aber .. Ich denke, es ist nur auf Leinwand verwendet

das ist mein neuer Code, dann ist dies simmilar Ergebnis als letztes Ergebnis

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

aber das Problem ist .. ich weiß nicht, wie Bild als Schaltfläche zu machen. Ich bin Neuling in J2me bitte helfen

+0

Stackoverflow ist kein Forum; Wenn Sie eine neue Frage haben, stellen Sie bitte eine neue Frage. Wenn Sie weitere Informationen in Ihre Frage aufnehmen möchten, bearbeiten Sie sie bitte (http://stackoverflow.com/posts/1295877/edit). Wenn Sie mit einem der Personen interagieren möchten, die geantwortet haben, können Sie ihnen einen Kommentar hinterlassen. – Will

Antwort

1

Sie könnten eine Art Datenstruktur Ihrer Tasten halten, die eine Traversierungsreihenfolge anzeigen. Sie könnten dann nach den gedrückten Tasten auf Ihrer Leinwand lauschen und basierend darauf, welche Taste gedrückt wurde (zB links, rechts, oben, unten, Auswahl usw.) können Sie aktualisieren, welche der Schaltflächen jetzt im Fokus ist (mit einem einfachen Index in Ihre Datenstruktur). Ihre Malmethode könnte erweitert werden, um einen Rahmen um das Bild, das den Fokus hat, zu zeichnen.

Wenn Sie nun auf die Auswahltaste drücken, werden Sie wissen, welche Taste den Fokus hat und welche Aktion ausgeführt werden soll.

Fortgeschrittene Probleme hier wäre erfrischend (Neuanstrich des Bildschirms) nach jedem Tastendruck, um das Bild usw. zu aktualisieren, um anzuzeigen, welcher Fokus hat. Sie möchten nicht den gesamten Bildschirm neu zeichnen, stattdessen können Sie Bereiche des Bildschirms neu streichen, basierend darauf, welche Schaltflächen sich geändert haben (d. H. Die Schaltfläche, die zuvor den Fokus hatte und die Schaltfläche, die jetzt den Fokus hat). Eine andere Alternative wäre, die Low-Level-Canvas-Klasse nicht zu verwenden, sondern stattdessen ein Framework wie LWUIT zu verwenden, das ähnlich wie Swing Buttons usw. und Layout-Manager bereitstellt. Dies könnte viel einfacher sein, als zu versuchen, mit der Low-Level-API zu zeichnen (ein Browser wie es aussieht).

+0

Bitte Chek Mein Code –

+0

Ich bekomme immer noch Stapel von diesem Fall .. Ich möchte meinen Code an Ihre E-Mail senden. und ich brauche Hilfe. –

+0

Mit welchem ​​Teil hast du Probleme? Hast du meinen Vorschlag in meiner anderen Antwort versucht? – DaveJohnston

1

Sie können nicht auf eine Schaltfläche auf einer Leinwand in J2ME schaffen, aber es gibt Alternativen:

  • Verwenden Sie ein javax.microedition.lcdui.Form, fügen Sie ein ImageItem mit Aussehen BUTTON es, einen Befehl hinzufügen zum ImageItem.

  • Verwenden Sie Schlüssel- und/oder Zeigerereignisse in DrawImageCanvas, indem Sie Canvas.keyPressed(), Canvas.keyreleased(), Canvas.pointerPressed() und/oder Canvas.pointerReleased() übersteuern. Sie können dem Bild sogar einen Rahmen hinzufügen, sodass es eher wie eine Schaltfläche aussieht.

  • Möglicherweise möchten Sie mit einem javax.microedition.lcdui.CustomItem in einem Formular als intermediäre Lösung experimentieren.

Es gibt anständige Dokumentation für all diese Klassen und Methoden in der MIDP-Spezifikation:

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

Sie könnten auch bei der Dokumentation von LWUIT suchen. Es ist eine Open-Source-Grafikbibliothek, die von Sun veröffentlicht wurde.

+0

Bitte Chek Mein Code –

0

Versuchen Sie, den Erscheinungsmodus des ImageItem-Objekts auf Item.BUTTON, z.

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

Versuchen Sie auch, einen Befehl zum ImageItem hinzuzufügen.

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

Dann endlich die Command definieren:

item.setItemCommandListener(/* itemCommandListener */);