type para link etiqueta ejemplos crear codigo botones boton button java-me icons midp lcdui

button - para - input type image html



Imagen en el botón-j2me (1)

Intento crear una GUI sencilla basada en menús con J2ME. Las entradas del menú son actualmente objetos de clases derivadas del botón de clase. ¿Hay alguna manera que pueda:

  1. Reemplace el texto en el botón y, en su lugar, muestre una imagen, como un ícono?

  2. Haga que el texto y la imagen aparezcan uno al lado del otro en la misma barra de menú.

Si mi pregunta no está clara, hágamelo saber y la editaré.


Puede crear su propio Item que se parece a un botón extendiendo la clase CustomItem .

Este es un MIDlet funcional con una buena clase MyButton :

import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.CustomItem; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.Item; import javax.microedition.lcdui.ItemStateListener; import javax.microedition.midlet.MIDlet; public class TestMidlet extends MIDlet implements ItemStateListener { class MyButton extends CustomItem { private Image _image = null; private boolean _down = false; private int _clicks = 0; public MyButton(Image image) { super(""); _image = image; } // Button''s image public void setImage(Image image) { _image = image; repaint(); } public Image getImage() { return _image; } // Has the button been clicked? public boolean isClicked() { if(_clicks>0) { _clicks -= 1; return true; } return false; } // Is the button currently down? public boolean isDown() { return _down; } public void setDown(boolean down) { if(_down) _clicks += 1; if(down!=_down) { _down = down; repaint(); notifyStateChanged(); } } public void setDown() { setDown(true); } public void setUp() { setDown(false); } // Minimal button size = image size protected int getMinContentHeight() { return getImage().getHeight(); } protected int getMinContentWidth() { return getImage().getWidth(); } // Preferred button size = image size + borders protected int getPrefContentHeight(int width) { return getImage().getHeight()+2; } protected int getPrefContentWidth(int height) { return getImage().getWidth()+2; } // Button painting procedure protected void paint(Graphics g, int w, int h) { // Fill the button with grey color - background g.setColor(192, 192, 192); g.fillRect(0, 0, w, h); // Draw the image in the center of the button g.drawImage(getImage(), w/2, h/2, Graphics.HCENTER|Graphics.VCENTER); // Draw the borders g.setColor(isDown()?0x000000:0xffffff); g.drawLine(0, 0, w, 0); g.drawLine(0, 0, 0, h); g.setColor(isDown()?0xffffff:0x000000); g.drawLine(0, h-1, w, h-1); g.drawLine(w-1, 0, w-1, h); } // If FIRE key is pressed, the button becomes pressed (down state) protected void keyPressed(int c) { if(getGameAction(c)==Canvas.FIRE) setDown(); } // When FIRE key is released, the button becomes released (up state) protected void keyReleased(int c) { if(getGameAction(c)==Canvas.FIRE) setUp(); } // The same for touchscreens protected void pointerPressed(int x, int y) { setDown(); } protected void pointerReleased(int x, int y) { setUp(); } } MyButton button = null; public void itemStateChanged(Item item) { if(item==button) { if(button.isClicked()) System.out.print("clicked, "); System.out.println(button.isDown()?"currently down":"currently up"); } } public void startApp() { try { Form form = new Form("Example"); button = new MyButton(Image.createImage("/icon.png")); form.append(button); form.setItemStateListener(this); Display.getDisplay(this).setCurrent(form); } catch(Exception e) { e.printStackTrace(); } } public void pauseApp() { } public void destroyApp(boolean unconditional) { notifyDestroyed(); } }