Puis-je utiliser plusieurs ActionListeners dans une classe unique?
Envisager la trop exemple simplifié ci-dessous; certains des écrits avec des pseudo-code pour des raisons de concision. Lorsque j'essaie d'exécuter ce qu'est, je reçois un compilateur erreur indiquant que le actionPerformed
est déjà trouvé dans mon main
méthode. Cependant, si je le renommer, le dire à actionPerformed2
il n'est plus reconnu par ActionListener
.
Ai-je besoin de combiner les auditeurs pour le foo
et foo2
méthodes en une seule ActionListener
méthode?? Comment différencier les auditeurs les uns des autres lors de l'utilisation de plusieurs auditeurs dans une classe unique avec de multiples bouton de l'objet?
Je suis juste en train de jouer avec les composants swing, donc je pense que je ne peut pas poser les bonnes questions...mais je peux toujours la modifier comme je l'aller. 🙂
public class foo {
declare button1, button2, button3 and panel1
public foo() {
show panel1 with button1 and button2;
}
public foo2() {
show panel1 with button3;
}
public void actionPerformed(ActionEvent e) {
Object source1 = e.getSource();
do some stuff when button1 is clicked
}
public void actionPerformed(ActionEvent f) {
Object source2 = f.getSource();
do some other stuff when button2 is clicked
}
public static void main(String[] args) {
foo myFoo = new foo();
}
}
- Pas comme indiqué; vous disposez de plusieurs méthodes de même signature--non pas juridique. Comme Aéroglisseur dit, les classes internes anonymes sont une réponse.
Vous devez vous connecter pour publier un commentaire.
Utiliser les classes internes anonymes pour cela.
Par exemple, le code que vous n'auriez jamais écrire, mais qui illustre un point:
Moi-même, je suis en utilisant plus AbstractActions et moins ActionListeners, et ont même commencé à utiliser la Commande de Modèle de Conception pour ce, de concert avec une PropertyChangeListener.
Comme un exemple, ma dernière GUI "voir la section" ressemble à ceci:
Et une partie de la section "control" ressemble à ceci:
Notez que je ne prétends pas être un expert à cela, mais je suis seulement en essayant de gérer la complexité du mieux que je peux. Il y a probablement de meilleures façons de la peau, ce chat.