2009-02-01 13 views
1

Tout d'abord, je suis un Java NOOB complet.Java - Gérer plusieurs événements avec une fonction?

Je souhaite gérer plusieurs pressions de bouton avec une seule fonction et effectuer certaines opérations en fonction du bouton sur lequel vous avez cliqué. J'utilise Netbeans, et j'ai ajouté un événement avec une fonction de liaison. Cette fonction reçoit un ActionEvent par défaut.

Comment puis-je obtenir l'objet qui a été cliqué afin de déclencher la fonction de liaison à partir de cette fonction afin que je sache quelle fonctionnalité poursuivre?

Répondre

7

L'objet qui a envoyé l'événement est la source de l'événement, evt.getSource() vous l'obtiendra. Cependant, il serait préférable d'avoir des gestionnaires séparés pour des événements séparés.

4

Appelez la méthode getSource() de l'ActionEvent. Par exemple:

public void actionPerformed(ActionEvent e) { 
    Object source = e.getSource(); 
    // 'source' now contains the object clicked on. 
} 
0

Si vous utilisez des événements AWT, puis ActionEvent prend en charge une méthode getSource() qui vous donnera l'objet soi-disant a généré l'événement.

Cela étant dit, il y a de meilleures conceptions dans lequel chaque objet instancie son propre gestionnaire d'événements

1

gérer plusieurs presses à bouton avec une fonction (méthode) que si toutes les presses de bouton ne exactement la même chose .

Même dans ce cas avoir une méthode privée et appeler cette méthode privée de tous les endroits où nécessaire.

Il n'est pas difficile d'écrire des gestionnaires d'événements distincts pour différents boutons. Dans le cas le plus simple, écrire des gestionnaires anonymes, comme suit:

aButton.addActionListener(new java.awt.event.ActionListener() 
    { 
     public void actionPerformed(ActionEvent ae) 
     { 
      myMethod(); 
     } 
    }); 

Dans un scénario plus complexe, écrire une classe distincte qui étend ActionListener et l'utiliser à l'intérieur du addActionListener() appel ci-dessus.

Ce n'est pas difficile, facile à entretenir et à étendre, et bien mieux que le actionPerformed pour tout. (Dans NetBeans, cliquez droit sur le bouton (s), Événements-> Action-> actionPerformed, le code est généré pour vous)

Questions connexes