J'ai étend la classe whitch JPanel:Déterminez le composant JPanel cliqué dans MouseListener. Gestion des événements
public class ButtonPanel extends JPanel {
private label;
public ButtonPanel() {
label=new JLabel("waiting for click");
add(label);
}
public void setButtonText() {
label.setText("just clicked");
}
}
J'ai plusieurs instances de cette classe qui est ajouté à JFrame. Je veux créer une instance de classe MouseAdapter et ensuite les ajouter en tant qu'écouteur souris à tous les composants ButtonPanel sur mon JFrame. Je 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 classe MouseAdapterMod Je veux être séparé de l'autre et de localiser dans son propre paquet. Il devrait ressembler à ceci:
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
}
}
Le problème est que je ne sais pas comment implémenter la méthode mouseClicked pour le rendre déterminer lequel de panneauBoutons générer l'événement et appeler la méthode correspondant à cette setButtonText() des composants. Est-ce que quelqu'un sait comment faire cela? Je sais que je peux y parvenir en incluant la fonctionnalité de gestion d'événements dans la classe ButtonPanel, mais ce n'est pas approprié pour moi, parce que je veux conserver la structure de classe comme je l'ai décrit ci-dessus et avoir une seule classe de MouseAdapterMod pour gérer tous les ButtonPanels.
Coup de coeur pour votre dernier paragraphe. –