Originariamente inviato da antony85
oltre l'overriding di un metodo di un interfaccia,mi servirebbe anche la possibilità di potergli cambiare la firma,ovvero deve poter accettare in input un altra variabile(string)oltre la sua normale(ActionEvent).
Se cambi signature non è più un override e quindi non ti "funziona" più (e non compila nemmeno).
Originariamente inviato da antony85
Lo scopo del porgramma è istanziare due oggetti di tipo button,aventi come costruttori due stringhe,la prima viene utilizzata per il testo ke appare sul bottone,la seconda per il testo che compare quando si fa CLICK sul bottone.la seconda va passata all'interfaccia listener.Ed io nn so come passargliela
Infatti non devi passarla al metodo del listener!!! Ci sono altri modi più eleganti.
Caso 1) Fare in modo che il testo sia una "proprietà" del listener.
codice:
class MioPulsanteListener implements ActionListener {
private String textOnClick;
public MioPulsanteListener(String textOnClick) {
this.textOnClick = textOnClick;
}
public void actionPerformed(ActionEvent e) {
JButton b = (JButton) e.getSource();
b.setText(textOnClick);
}
}
Poi semplicemente:
tuoButton1.addActionListener(new MioPulsanteListener("testo1"));
tuoButton2.addActionListener(new MioPulsanteListener("testo2"));
Caso 2) Fare in modo che il testo sia una "proprietà" del pulsante, quindi va esteso JButton
codice:
class MioPulsante extends JButton {
private String textOnClick;
public MioPulsante(String text, String textOnClick) {
super(text);
this.textOnClick = textOnClick;
}
public String getTextOnClick() {
return textOnClick;
}
}
E nel listener (che si potrebbe anche incapsularlo in MioPulsante):
codice:
public void actionPerformed(ActionEvent e) {
MioPulsante b = (MioPulsante) e.getSource();
b.setText(b.getTextOnClick());
}
E non sono le uniche due possibilità!! Insomma ... è inutile che smanetti sui metodi ... pensa in termini di oggetti e proprietà!