Ho risolto il problema.
Vorrei però avere conferma di quello che ho fatto visto che sto studiando il Java ed è la prima volta che implemento un qualcosa del genere. Funziona tutto ma ho ancora qualche dubbio e non andrò avanti fino a quando non mi sarà tutto chiaro.
La classe del pannello con il combo si chiama
ComboCategorieMat che starebbe per "combo specifico per le categorie dei materiali".
Per prima cosa ho scritto questa interfaccia
- Codice: Seleziona tutto
public interface ComboCategorieMatListener extends EventListener {
public void actionPerformed(java.awt.event.ActionEvent evt);
}
Che, essendo un' interfaccia, pretenderà che il metodo
actionPerformed sia implementato.
All' interno del pannello ho dichiarato una ArrayList per raccoggliere tutti coloro che vorranno servirsi dell' evento custom che ho scritto.
- Codice: Seleziona tutto
private ArrayList<ComboCategorieMatListener> ascoltatori = new ArrayList<ComboCategorieMatListener>();
Quindi ho implementato il metodo per aggiungere gli ascoltatori alla lista
- Codice: Seleziona tutto
public void addActionListener(ComboCategorieMatListener l) {
ascoltatori.add(l);
}
ed infine ho implementato un mio metodo privato per generare l' evento. Ora ne ho implementato un solo tipo ma penso che potrei implementarne altri cambiando semplicemente la stringa "SELECTED" o la costante ActionEvent.ACTION_PERFORMED dell' evento.
- Codice: Seleziona tutto
private void generaEvento() {
int n = ascoltatori.size();
ActionEvent e = new ActionEvent(this,ActionEvent.ACTION_PERFORMED,"SELECTED");
if (n>0) {
int i;
for (i=0; i<n; i++) ascoltatori.get(i).actionPerformed(e);
}
}
E' vero che avrei potuto farlo con un ciclo foreach ma lasciamo perdere, almeno per ora.
Nel costruttore del form che contiene questo combo (chiamato
comboCat), dopo tutte le inizializzazioni che l' IDE ha generato, ho aggiunto questo codice
- Codice: Seleziona tutto
comboCat.addActionListener(new ComboCategorieMatListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
combCatActionPerformed();
}
});
Dove eventualmente posso sapere anche il tipo di evento che il mio combo ha generato modificando, appunto, l' evento nel metodo
generaEvento.
Ed infine sono andato a scrivermi in una posizione "comoda" il metodo
combCatActionPerformed anche se non è strettamente necessario.
- Codice: Seleziona tutto
private void combCatActionPerformed() {
System.out.println("Evento custom ricevuto ora");
}
Aspetto con ansia commenti e correzioni.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.