Cliquez sur le bouton Pass événement actionPerformed sur les clés de la presse

Je suis en train de travailler sur un Java cession qui doit être fait à l'aide de AWT. Je veux un bouton pour déclencher en appuyant sur la touche entrée lorsque le bouton est mis en avant. J'ai trouvé comment faire cela dans le Swing avec le doClick() la méthode, mais cela ne semble pas fonctionner dans AWT. Jusqu'à présent, je suis en train d'essayer ceci:

button.addActionListener(this); //Passes value from a TextBox to actionPerformed() 

button.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
         if(e.getKeyCode()==KeyEvent.VK_ENTER) {
              actionPerformed(null);
         }
    } 
});

public void actionPerformed (ActionEvent e) {
     try {  
          if (e.getSource() == button) {
               //Stuff I want to happen
          } else if (e.getSource() == anotherButton) {
               //Other Stuff
          } else {     //third button
               //More stuff
          }
     } catch (NumberFormatException nfe) { 
          //Null argument in keyPressed triggers this
          //catches empty string exception from TextBox
     }
 }

Comme je l'ai mentionné, les commentaires, l'argument null va déclencher la capture. Quelqu'un aurait-il une idée de ce que cet argument pourrait être pour appuyez sur le bouton ou peut-être une façon plus facile d'aller à ce sujet? Merci.

Edit - clarification: actionPerformed() effectue l'une des trois choses avec entrée d'une zone de texte en fonction de trois boutons est cliqué. Le try/catch est d'attraper chaîne vide/format exceptions.

  • ... that has to be done using AWT. ack! Je suis désolé pour vous. 🙁
  • Il est généralement préférable de ne pas compter sur la manipulation d'exception pour déclencher des événements / les utiliser comme si elles étaient conditionnelles.
  • Peut-être juste moi, mais je n'aurais if's et else if's dans mon actionPerformed (ou similaire) méthodes. Si d'une certaine façon votre actionPerformed est appelée à partir d'un composant vous n'avez pas défini de conditions pour, juste l'ignorer.
  • En d'autres termes, si la source a été button, appel onButtonPress(), si elle n'était pas simplement l'ignorer. Si vous avez un autre bouton appelé button2, ajouter } else if(source == button2) { à votre actionPerformed.
  • Je n'aurais jamais un catch ou un else dans un actionPerformed.
  • Désolé pour le commentaire-dump, mais vous seriez mieux de ne pas appeler actionPerformed directement. Délégué de actionPerformed et keyPressed à des méthodes qui définissent ce qui doit se produire lorsque le bouton est pressé, par exemple, si le bouton est un bouton "fermer", appel " onClose()` ou si c'est un bouton de soumission, appel à quelque chose comme submit(). Jusqu'à vous. 🙂
  • Je suis sûr que vous pouvez gérer sans la try catch. Publier vos actionPerformed code.
  • Envisager cette approche: goo.gl/Khp9T
  • Hey yo, si ça marche ce serait cool si vous pouviez accepter la réponse. 🙂

InformationsquelleAutor mcallinder | 2012-01-26