ho una classe di eventi a tuute le esigenze estende JPanel:Determinare il componente JPanel selezionato in MouseListener. movimentazione
public class ButtonPanel extends JPanel {
private label;
public ButtonPanel() {
label=new JLabel("waiting for click");
add(label);
}
public void setButtonText() {
label.setText("just clicked");
}
}
Ho diverse istanze di quella classe che si aggiunge alla JFrame. Voglio creare un instanse della classe MouseAdapter e aggiungerli come listener del mouse a tutti i componenti ButtonPanel sul mio JFrame. I 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 voglio essere separato dall'altro e individuare in un suo pacchetto. Dovrebbe assomiglia a questo:
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
}
}
Quindi il problema è che non so come implementare il metodo mouseClicked per renderlo determinare quale delle ButtonPanel genera l'evento e chiamare il corrispondente a quella setButtonText componente() metodo. Qualcuno sa come farlo?
So che posso realizzare questo includendo la gestione funzionalità della classe ButtonPanel evento, ma non questo è modo appropriato per me, perchè voglio mantenere la struttura di classe come ho descritto sopra e avere una sola istanza di class MouseAdapterMod per gestendo tutti i ButtonPanel.
Complimenti per il vostro ultimo paragrafo. –