Cambiar fondo con botones (JAVA/JLabel)

   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:


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