tengo una clase de sucesos générale extiende JPanel:Determine el componente de JPanel cliqueado en MouseListener. manipulación
public class ButtonPanel extends JPanel {
private label;
public ButtonPanel() {
label=new JLabel("waiting for click");
add(label);
}
public void setButtonText() {
label.setText("just clicked");
}
}
tengo varias instancias de esa clase que se añade a JFrame. Quiero crear un instanse de la clase MouseAdapter y luego agregarlos como un detector de mouse a todos los componentes de ButtonPanel en mi JFrame. Me meen:
ButtonPanel butt1 = new ButtonPanel();
ButtonPanel butt2 = new ButtonPanel();
ButtonPanel butt3 = new ButtonPanel();
//... here goes code which add ButtonPanels to JFrame
MouseAdapterMod mam = new MouseAdapterMod();
butt1.addMouseListener(mam);
butt2.addMouseListener(mam);
butt3.addMouseListener(mam);
La clase MouseAdapterMod Quiero ser separado del otro y localizar en su propio paquete. Debería ve así:
public class MouseAdapterMod extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
//here goes the code of calling setButtonText method of ButtonPanel component on which the event had occurred
}
}
Así que el problema es que no sé cómo poner en práctica el método mouseClicked para que sea determinar cuál de ButtonPanel generar el evento y llamar a la correspondiente a ese componente setButtonText método(). ¿Alguien sabe cómo hacer eso?
Sé que puedo lograr esto incluyendo la funcionalidad de manejo de eventos en la clase ButtonPanel, pero no es la forma adecuada para mí, porque quiero mantener la estructura de clases como describí anteriormente y tener solo una instancia de la clase MouseAdapterMod para manejando todos los ButtonPanels.
Felicitaciones por su último párrafo. –