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 etelse if
's dans monactionPerformed
(ou similaire) méthodes. Si d'une certaine façon votreactionPerformed
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
, appelonButtonPress()
, si elle n'était pas simplement l'ignorer. Si vous avez un autre bouton appelébutton2
, ajouter} else if(source == button2) {
à votreactionPerformed
. - Je n'aurais jamais un
catch
ou unelse
dans unactionPerformed
. - Désolé pour le commentaire-dump, mais vous seriez mieux de ne pas appeler
actionPerformed
directement. Délégué deactionPerformed
etkeyPressed
à 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 commesubmit()
. Jusqu'à vous. 🙂 - Je suis sûr que vous pouvez gérer sans la
try catch
. Publier vosactionPerformed
code. - Envisager cette approche: goo.gl/Khp9T
- Hey yo, si ça marche ce serait cool si vous pouviez accepter la réponse. 🙂
Vous devez vous connecter pour publier un commentaire.
Vous pouvez toujours avoir une méthode appelé quelque chose comme
onButtonPress()
, qui votreactionPerformed
peut appeler, ainsi que votrekeyPressed
.if-else
's dans votreactionPerformed
?