2009-08-18 10 views
0

hallo. Je veux vous demander quelque chose ici. Je sais que cela peut être facile pour vous, mais cela peut être difficile pour moi. J'apprends le nouveau J2ME. Je veux connaître les bases des langages de programmation ceci. J'ai un cas comme celui-ci:Bouton Image Problème

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

Je veux savoir comment puis-je modifier l'image d'être un bouton d'image (touche de fonction). s'il vous plaît aider


j'ai essayé d'ajouter du code à l'événement de presse clé, mais il me fait confus

alors j'essaie d'ajouter GRAPHIC mais .. Je pense qu'il ne sert à toile

c'est mon nouveau code, ce résultat est simmilar en dernier résultat

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

mais le problème est .. je ne sais pas comment faire l'image en tant que bouton. je suis débutant dans J2me s'il vous plaît aider

+0

StackOverflow est pas un forum; Si vous avez une nouvelle question, posez une nouvelle question. Si vous souhaitez inclure plus d'informations dans votre question, s'il vous plaît [modifier] (http://stackoverflow.com/posts/1295877/edit). Si vous souhaitez interagir avec l'une des personnes ayant répondu, vous pouvez leur laisser un commentaire. – Will

Répondre

1

Vous pouvez garder une sorte de structure de données de vos boutons indiquant un ordre de traversée. Vous pouvez alors écouter les événements pressés sur votre toile et en fonction de la touche pressée (par exemple, gauche, droite, haut, bas, sélectionnez, etc) vous pouvez mettre à jour le bouton qui est maintenant au point (en utilisant un index simple dans votre Structure de données). Votre méthode de peinture peut être étendue pour dessiner une bordure autour de l'image qui a le focus. Maintenant, lorsque vous écoutez la touche de sélection, vous savez quel bouton a le focus et par conséquent quelle action exécuter.

Des problèmes plus avancés ici seraient rafraîchissants (repeindre l'écran) après chaque pression sur la touche pour mettre à jour l'image, etc. pour montrer qui a le focus. Vous ne voudriez pas redessiner l'intégralité de l'écran, mais vous pouvez définir des zones de l'écran à repeindre en fonction des boutons qui auront été modifiés (c'est-à-dire le bouton qui avait précédemment le focus et le bouton qui a maintenant le focus). Une autre alternative serait de ne pas utiliser la classe canvas de bas niveau mais plutôt d'utiliser un framework comme LWUIT qui fournit des boutons etc. et des gestionnaires de layout, un peu comme Swing. Cela peut être beaucoup plus facile que d'essayer de dessiner (un navigateur par son apparence) en utilisant l'API de bas niveau.

+0

Please Chek Mon code –

+0

Je reçois toujours la pile de cette affaire .. Je veux envoyer mon code à votre courrier. et j'ai besoin de t'aider. –

+0

Dans quelle partie rencontrez-vous des problèmes? Avez-vous essayé ma suggestion dans mon autre réponse? – DaveJohnston

1

Vous ne pouvez pas créer un bouton sur une toile en J2ME, mais il existe des alternatives:

  • Utilisez un javax.microedition.lcdui.Form, ajoutez un ImageItem avec l'apparence BUTTON, y ajouter une commande à l'ImageItem. Utilisez les événements key et/ou pointer sur votre DrawImageCanvas en surfant sur Canvas.keyPressed(), Canvas.keyreleased(), Canvas.pointerPressed() et/ou Canvas.pointerReleased(). Vous pouvez même ajouter une bordure à l'image pour qu'elle ressemble plus à un bouton.

  • Vous pouvez expérimenter avec un javax.microedition.lcdui.CustomItem à l'intérieur d'un formulaire en tant que solution intermédiaire.

Il existe une documentation décent pour toutes ces classes et méthodes dans la spécification MIDP:

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

Vous pouvez également consulter la documentation de LWUIT. C'est une bibliothèque graphique open source publiée par Sun.

+0

Veuillez saisir mon code –

0

Essayez de définir le mode d'apparence de l'objet ImageItem sur Item.BUTTON, par ex.

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

Essayez également d'ajouter une commande à ImageItem.

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

Réglez ensuite enfin le CommandListener:

item.setItemCommandListener(/* itemCommandListener */); 
Questions connexes