J'essaie d'apprendre quelque chose sur l'interface graphique, en utilisant NetBeans6.8, en commençant par la section GUI dans le tutoriel java.Événement KeyPressed
Il existe un exercice simple pour un convertisseur Celsius-Fahrenheit. Je veux que cela ait deux TextFields, un pour Celsius et un pour la température Fahrenheit; Si l'utilisateur tape dans le champ de texte Celsius, il obtient le résultat "imprimé" dans le texte en fahrenheit. et vice versa.
Alors, je mets à la fois la textfields un événement keyTyped, voici le code:
private void celsiusTextKeyTyped(java.awt.event.KeyEvent evt) {
int cels = Integer.parseInt(celsiusText.getText());
int fahr = (int)(cels * 1.8 + 32);
fahrText.setText(fahr + "");
}
private void fahrTextKeyTyped(java.awt.event.KeyEvent evt) {
int fahr = Integer.parseInt(fahrText.getText());
int cels = (int)(fahr/1.8 - 32);
celsiusText.setText(cels + "");
}
Il ne fonctionne pas. Si je tape quelque chose dans un champ de texte j'ai eu cette exception: java.lang.NumberFormatException: For input string: ""
Le code qui attache les auditeurs: [. Cependant, je ne peux pas le modifier, il est AutoGénéré]
celsiusText.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
celsiusTextKeyTyped(evt);
}
});
fahrText.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
fahrTextKeyTyped(evt);
}
});
Integer.parseInt() prend un String et retourne un int ... Vouliez-vous dire s'il n'a pas de "chaîne numérique"? – antonyt
Je recommande fortement d'utiliser NumberFormatException au lieu de l'exception globale, et d'imprimer la trace de la pile aussi. Néanmoins ceci ne résout pas le problème le cache seulement. –
@Vash, je ne peux pas être plus d'accord, était juste de sauter dans une solution rapide. J'ai édité la solution pour correspondre;) @antonyt, "3" = 3, "63" = 63, "0" = 0, "a" = ERREUR, "" = ERREUR. – JonWillis