Hace algún tiempo publique como hacer para colocar un fondo en Java, utilizando JLabel, JPanel o JDesktopPane, todo explicado en estas entradas:
Sin embargo, el día de ayer me preguntaron "¿que tal si quiero que un botón me cambie la imagen?", bueno, entonces hacemos ciertas modificaciones a lo anteriormente explicado, lo primero las imágenes. Para mayor comodidad, la imagen llevará el mismo nombre del botón (del label del botón), así que para este ejemplo usaremos las siguientes:
Luego de esto debemos emplear los métodos "validate()" y "repaint()" de java, entonces nuestro listener quedará de la siguiente manera:
Sin embargo, el día de ayer me preguntaron "¿que tal si quiero que un botón me cambie la imagen?", bueno, entonces hacemos ciertas modificaciones a lo anteriormente explicado, lo primero las imágenes. Para mayor comodidad, la imagen llevará el mismo nombre del botón (del label del botón), así que para este ejemplo usaremos las siguientes:
NOTA: Colocar los nombres "Fondo A", "Fondo B" y "Fondo C" respectivamente para el funcionamiento de este ejemplo.
Luego de esto debemos emplear los métodos "validate()" y "repaint()" de java, entonces nuestro listener quedará de la siguiente manera:
public void actionPerformed(ActionEvent evt) { Fondo.setIcon(new ImageIcon(evt.getActionCommand()+".gif")); Fondo.repaint(); Fondo.validate(); }Y eso es todo, de tal forma que nuestro ejemplo queda de la siguiente manera:
import java.awt.*; import java.awt.event.*; import javax.swing.*; @SuppressWarnings("deprecation") public class FrameFondoBoton extends JFrame { JLabel Fondo = new JLabel(); JPanel PanelBotones = new JPanel(); JButton BotonA = new JButton("Fondo A"); JButton BotonB = new JButton("Fondo B"); JButton BotonC = new JButton("Fondo C"); public FrameFondoBoton() { super("Probando el cambio de fondo"); setLocation(100,100); setSize(510,565); add("North", Fondo); add("South",PanelBotones); PanelBotones.add(BotonA); PanelBotones.add(BotonB); PanelBotones.add(BotonC); BotonA.addActionListener(new elBoton()); BotonB.addActionListener(new elBoton()); BotonC.addActionListener(new elBoton()); PanelBotones.setLayout(new GridLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } class elBoton implements ActionListener { public void actionPerformed(ActionEvent evt) { Fondo.setIcon(new ImageIcon(evt.getActionCommand()+".gif")); Fondo.repaint(); Fondo.validate(); } } public static void main(String[] arg) { JOptionPane.showMessageDialog(null,"Cambiar fondo con botones....\n"); JOptionPane.showMessageDialog(null,"By Carlitox ("+ "http://calitoxenlaweb.blogspot.com)"); FrameFondoBoton app = new FrameFondoBoton(); app.setVisible(true); } }NOTA: Recuerda colocar las imágenes junto con el archivo ".java" en una misma carpeta.
Imagen de Ejemplo
Recibe notificaciones por correo