Actualmente he visto 2 formas muy particulares de hacerlo y que las mostrare con un ejemplo sencillo que tiene 3 botones, cada botón hace referencia a un color y cuando se da clic en alguno de ellos simplemente el panel se pinta de dicho color.
1ra Forma. El panel al ser el objeto que va ser afectado por el evento es el que implementa la interfaz ActionListener.
Código
import java.awt.*; import java.awt.Color; import java.awt.event.*; import javax.swing.*; public class Manejo{ } } Lamina l1; setSize(d); l1 = new Lamina(); add(l1); setVisible(true); } } public Lamina(){ verde.addActionListener(this); azul.addActionListener(this); amarillo.addActionListener(this); add(verde); add(azul); add(amarillo); } @Override if(fuente == verde){ setBackground(fondo); }else if( fuente == azul){ setBackground(fondo); }else{ setBackground(fondo); } } }
2da Forma. Se crea una clase anidada que controla el evento e implementa la interfaz actionListener .
Código
import java.awt.*; import java.awt.Color; import java.awt.event.*; import javax.swing.*; public class Manejo{ } } Lamina l1; setSize(d); l1 = new Lamina(); add(l1); setVisible(true); } } public Lamina(){ add(verde); add(azul); add(amarillo); } this.c = c; } @Override setBackground(c); } } }
A partir de las anteriores formas de dar solución al problema me causa la incógnita el saber cual podría ser la mejor forma de hacerlo, personalmente no encuentro mucha diferencia para inclinarme hacia un lado pero me gustaría saber si alguien pudiera compartir su experiencia y explicar cual prefiere y la razón del por que.