JAVA JOptionPane.showInputDialog

Fermé
NoooR - 6 août 2008 à 18:35
 Utilisateur anonyme - 16 nov. 2009 à 18:44
Bonjour,
j'ai utilisé la méthode JOptionPane.showInputDialog(null,"Entrer le nom du fichier", Enregistrer", JOptionPane.PLAIN_MESSAGE) mais quand je clique sur le bouton (annuler) l'application se ferme et un message d'erreur qui s'affiche (java.lang.NullPointerException), je sais que je doit gerer une exception mais je sais pas comment, aidez moi SVP
A voir également:

6 réponses

Utilisateur anonyme
19 avril 2009 à 22:10
Salut,

Comme il n'y a pas eu de nouvelle réponse j'ai totalement oublié de donner ma solution désolé.

Pour ceux qui seraient intéressés:
En modifiant légèrement la réponse de sandul:

String fileName = "";
try {
fileName = JOptionPane.showInputDialog(null, "Entrer le nom du fichier", "Ouvrir",
JOptionPane.PLAIN_MESSAGE);
//Si on annule c'est la ligne suivante qui provoque la levée de NullPointerException
if (fileName.equals(null)) {} // on ne fait rien
}

catch(NullPointerException npe) // cas <annuler> : fileName.equals(null)
{
fileName = "Saisie annulée";
}
if (!fileName.equals("Saisie annulée") ){
in = new BufferedReader(new FileReader(fileName));
-------

Cordialement,

Dan
1
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
6 août 2008 à 18:40
Salut,

Euh, tu fais qqch du genre
try {
// ton code 
} catch (Exception e) {
// la gestion de l'exception
} finally {
// éventuellement faire un clean ici: fermeture des handlers, des result sets, des connexions...
}


Dans un autre ordre d'idées, pour les fichiers tu peux également utiliser JFileChooser.
++
0
je connais cette forme mais que dois je mettre dedans?
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722 > NoooR
6 août 2008 à 19:00
De quelle "forme" parles-tu? du bloc try..catch ou bien de l'appel à JFileChooser?
0
Bonjour euh je pense que la bonne solution c'est pas de gerer le NullPointerExpception par ce que ce genre d'exception es levée une fois qu'il y a un objet qui n'est pas initialisé enfin un projet d'allocation...il suffit de voir ce que fait la JOptionPane et donc évidement ce qu'elle doit faire en cas d'annulation(enfin une fois que l'utilisateur veux rien faire...) où doit aller la JOptionPane.En générale une JOptionPane return toujours 0 ou 1 ou 2(-1) en cas d'annulation c'est à dire lorsque la JOptionPane return 2 ou -1 que doit-elle faire?c'est tout simplement la la solution et l'objet retourner dans ce cas ne doit pas être null et le tour est joué...
Bon Courage!
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
6 août 2008 à 19:09
Oui, tout à fait, j'avais lu trop vite; les NullPointerException ne sont pas à catcher, il faut gérer cela correctement depuis le code.
0
j'ai pensé a ca mais ds le code source ta pas la main pour gerer ce qui doi faire en cas d'annulation, tu peut le faire pour les boite de dialogue mais pas pour les boite de saisie
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722 > NoooR
6 août 2008 à 19:27
Ben, poste ton code (uniquement cette partie-là)
0
NoooR > sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010
7 août 2008 à 18:06
BufferedReader IN = null;
try {
IN = new BufferedReader(new FileReader(JOptionPane.showInputDialog(null,
"Entrer le nom du fichier", "Ouvrir",JOptionPane.PLAIN_MESSAGE)));
}
catch (Exception exp) {
Erreur(exp, 1);
}
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722 > NoooR
7 août 2008 à 18:16
try {
	String fileName = JOptionPane.showInputDialog(null, "Entrer le nom du fichier", "Ouvrir",
			JOptionPane.PLAIN_MESSAGE);
	if (fileName != null) {
		in = new BufferedReader(new FileReader(fileName));
	}
} catch (Exception exp) {
	Erreur(exp, 1);
}


Mais encore une fois, pour ce genre de choses j'utiliserais JFileChooser, vraiment fait pour.
0
Utilisateur anonyme
8 août 2008 à 01:03
Salut,

C'est bien sur cette ligne : if (fileName != null) {
in = new BufferedReader(new FileReader(fileName));
}
que tu as : NullPointerException ?

Quand on clique sur Annuler fileName est force a null et on ne peut plus "citer" filname sans lever NullPointerException.

Je vais chercher un peu plus tard le moyen de contourner.

a+

dan.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tiDevDu54 Messages postés 13 Date d'inscription dimanche 15 novembre 2009 Statut Membre Dernière intervention 28 août 2012
16 nov. 2009 à 16:36
j'aurai voulu savoir comment faire pour dire à l'application de se quitter lorsque l'utilisateur clique sur le bouton "annuler" dans un JOptionPane.showInputDialog. Parce que pour le moment il m'affiche une erreur lorsque je clique sur le bouton annulé ou si je clique sur la croix en haut a droite.
0
Utilisateur anonyme
16 nov. 2009 à 18:44
Salut,

La réponse est déjà donnée avec fileName, mais j'ajoute celle-ci plus générale:

String uneEntree = ""; 
         try { 
            uneEntree = JOptionPane.showInputDialog(null, "Entrer quelque chose au clavier,\n"
               + "(ou rien et <Intro> pour dire que la saisie est terminee):", "Un Titre", 
               JOptionPane.PLAIN_MESSAGE); 
         //Si on annule c'est la ligne suivante qui provoque la levée de NullPointerException 
            if (uneEntree.equals(null)) {} // on ne fait rien 
            if (uneEntree.equals(""))
             
               System.out.println("Fin de saisie par <Intro> sans rien frapper au clavier");
         } 
         
             catch(NullPointerException npe) // cas <annuler> : uneEntree.equals(null) 
            { 
               System.out.println("La saisie  a ete annulee par le clique du bouton <Annuler>"); 
            } 


Cordialement,

dan
0