Ciao a tutti,
ho uno scenario per cui chiedo consiglio, capito il quale mi si aprirà un mondo nuovo sicuramente; un attimo di pazienza che spiego il tutto
Si supponga di avere 2 classi ed un applet, di cui:
la prima classe è
la quale è una lista da me personalizzata, mentre la seconda classe ècodice:public class SpecialList extends List{...}
che è un pannello che gestisce dinamicamente una lista di bottoni in esso contenuti; ed infine un applet che utilizza queste due classi (o componenti)codice:public class SpecialComponent extends Panel { Button[] vButton; ... }
Ora volendo fare in modo che delle azioni compiute su questi oggetti membro, scaturisca qualcosa nella classe MyApplet, cosa devo fare?codice:public class MyApplet extends Applet { SpecialList sl; SpecialComponent sc; ... }
"Improvvisando" ho visto che da MyApplet faccio
in MyApplet esegue actionPerformed (ovviamente se debitamente implementato), e lo fa perché comunque SpecialList è una lista.codice:sl.addActionListener(this);
Invece il codice
non è possibile farlo, poiché il Panel non implementa questo metodo; se dichiaro il metodo addActionListener in SpecialComponent, in cui "collego" il listener (MyApplet) ad ogni bottone dell'array, esso riceve l'azione del click in actionPerformed, tuttavia come sorgente dell'evento risulta il singolo bottone interno e non il loro componente padre SpecialComponent.codice:sc.addActionListener(this);
Mi rendo conto che la cosa è intrecciata, ma spero che almeno la questione sia chiara...
Idee?


Rispondi quotando