2017-05-06 3 views
1

J'ai créé un écouteur d'action qui écoute en cas de changement avec un departingStop (un objet zone de liste déroulante)Java: Ajout du même écouteur d'action boîtes combo Muliple

departingStop.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
      //Lots of code here 
    } 
}); 

Je voudrais aussi ajouter cet écouteur d'action à une autre zone de liste déroulante (finalStop) sans avoir à créer un écouteur séparé comme ceci:

finalStop.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
      //Lots of code here 
    } 
}); 

Comment cela peut-il être atteint? Merci

+0

cet écouteur d'action est anonyme, vous avez besoin d'une référence qui est mis à la fois –

Répondre

3

Vous pouvez attribuer l'auditeur à une variable ...

ActionListener listener = new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
      //Lots of code here 
    } 
}; 

Et puis ajoutez plusieurs fois ...

departingStop.addActionListener(listener); 
finalStop.addActionListener(listener); 
+0

Merci! Acceptera en 8 minutes ... –

2

comme ci-dessus a commenté, vous implémentez un auditeur anonyme vous avez besoin d'une référence définie sur les deux:

ActionListener foo = new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
      //Lots of code here 
    } 
}; 

departingStop.addActionListener(foo); 
finalStop.addActionListener(foo); 
0

Si votre IDE rend difficile la définition d'un auditeur rbitrary sur les composants de l'interface graphique, mettez la fonctionnalité d'écoute commune dans une méthode distincte et appeler cette méthode à la fois les auditeurs de boîtes combo:

departingStop.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
      commonGutsOfListener(arg0); 
    } 
}); 

departingStop.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
      commonGutsOfListener(arg0); 
    } 
}); 

private void commonGutsOfListener(ActionEvent arg0){ 
     //Lots of code here 
}