[Java] java.lang.NumberFormatException

Résolu
valentin2703 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   -  
choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   -
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 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
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   Statut Membre Dernière intervention   9
 
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   Statut Membre Dernière intervention   9
 
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 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
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   Statut Membre Dernière intervention   9
 
Ouai ça peut se faire, mais ça ne change rien au fait que le Switch ne marche pas :(
0
choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
tu utilises quel version de java ???

à partir du SE 7, tu peux utiliser des strings
0
ghFrankfurt Messages postés 207 Date d'inscription   Statut Membre Dernière intervention   23
 
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   Statut Membre Dernière intervention   9
 
Le KeyEvent.VK_X est un integer.
0
choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
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 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
ne cherche plus

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

je crois que c'est ce que tu cherches
0