[Java] java.lang.NumberFormatException

Résolu/Fermé
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 - Modifié par valentin2703 le 27/04/2011 à 08:46
choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 - 28 avril 2011 à 09:43
Bonjour,

Cette erreur apparait quand je tente de faire une action avec mon programme. J'ai crée une petite interface pour changer les raccourcis attribués à mes JButton, JMenu, ...
Pour ce faire, j'utilise la méthode :
public void changeButtonMnemonic(int newMnemo){ 
      reset.setMnemonic(newMnemo);  //reset ==> Bouton
} 


Ensuite je rentre une lettre dans un JTextField et je voudrais que cela change le raccourcis, dans mon actionperformed, je met donc :

raccourcis = JTEXTFIELD.getText(); 
key = "KeyEvent.VK_"+raccourcis; 
int intkey = Integer.parseInt(key); 
changeButtonMnemonic(intkey);


Et la quand je veut changer mon raccourcis j'obtient l'erreur java.lang.NumberFormatException. Pourtant j'ai converti mon String au format Integer :(
Et la j'avoue avoir un peut tout tenter, donc si vous aviez quelques idées :D


A voir également:

3 réponses

choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 2 101
Modifié par choubaka le 27/04/2011 à 09:17
bonjour

C'est normal, ceci "key = "KeyEvent.VK_"+raccourcis", ne pourra jamais être converti en int..

pour qu'un string soit converti en int, il doit contenir un caractère représentant un chiffre.

Tu dois trouver une autre solution, vois plutôt du côtés des select case.. cumulés avec des conditions afin de ne pas se retrouver avec de trop long select case

tu peux également travailler avec des structures de données de type clef-valeur

du style

Clef -> Valeur
A -> KeyEvent.VK_A
B -> KeyEvent.VK_B
etc...


Chouba,
Rhâââgnagna
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
27 avril 2011 à 09:36
Ouai je me suis dit que je pourrait aussi faire ça, mais sa fait quand même une bonne 50aine de valeurs a traiter ^^ Si on compte les F1-F12, A-Z, 0-9
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
Modifié par valentin2703 le 27/04/2011 à 09:54
Petit problème avec le Switch Case.
Je récupère le raccourcis dans un JComboBox (J'ai mis toutes les valeurs de F1-F12, A-Z, 0-9) de cette manière :

String raccourcis = ""; 
public void itemStateChanged(ItemEvent a){ 
 switch(a.getStateChange()){ 
  case ItemEvent.SELECTED:{ 
   raccourcis = String.valueOf(COMBOBOX.getSelectedItem());  
  } 
 } 
}


Ensuite je veut traiter le raccourcis quand j'appuie sur le Bouton "okquitter" :

public void actionPerformed(ActionEvent e){ 
         if(e.getSource() == okquitter){ 
   System.out.println(raccourcis); 
   switch (raccourcis){ 
    case "F1": 
     changeButtonMnemonic(KeyEvent.VK_F1);     
   } 
  } 
         } 
}


Mais il me dit qu'on ne peut pas traiter une valeur String dans un Switch x)
0
choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 2 101
27 avril 2011 à 09:52
personnellement, je créerais une classe comme une sorte de bibliothèque qui pourrait être interrogée en fonction de ce qui est entré.
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
27 avril 2011 à 09:55
Ouai ça peut se faire, mais ça ne change rien au fait que le Switch ne marche pas :(
0
choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 2 101
27 avril 2011 à 10:01
tu utilises quel version de java ???

à partir du SE 7, tu peux utiliser des strings
0
ghFrankfurt Messages postés 207 Date d'inscription mardi 16 novembre 2010 Statut Membre Dernière intervention 10 décembre 2014 23
27 avril 2011 à 09:15
Si j'ai bien compris tu essayes de mettre un caractère au format String dans une variable Int. Mais sauf erreur le parseInt ne marche pas pour du type String.

Il faut le passer en entier, donc en ASCII

valeurChar = (char)i;

valeurInt = (int)c;

Par contre je n'ai pas encore touché aux raccourcis donc je ne sais pas comment il doit récupérer la valeur derrière.
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
27 avril 2011 à 09:36
Le KeyEvent.VK_X est un integer.
0
choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 2 101
27 avril 2011 à 19:01
je vais essayer de te créer cette fameuse classe ce soir ...

si ça marche, tu me devras un pot ... ;-)
0
choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 2 101
27 avril 2011 à 20:37
ne cherche plus

https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

je crois que c'est ce que tu cherches
0