Erreur lors de l'annuler les showInputDialog
Je voudrais créer une boîte de dialogue de saisie lors de l'enregistrement est créé et enregistrer la saisie de l'utilisateur comme input
dans le fichier.
Voici le code :
String input = JOptionPane.showInputDialog(null, "Enter name : ", "New Record!", 1); //This to let user input name
try
{
JOptionPane.showMessageDialog(null, "Thanks for playing.", "Thanks", 1); //Show this dialog after user input
HighestScoreFile.HighestScoreFile(input, hours, minutes, seconds, click); //Store the data into a file, the `method` is in another class.
}
catch(IOException ex){}
Quand il n'y a aucune intervention de l'utilisateur ou de l'entrée, le OK
bouton fonctionne correctement, mais si je clique sur le cancel
bouton, il renvoie ces erreurs :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at HighestScoreFile.HighestScoreFile(HighestScoreFile.java:22)
at MemoryGame$ButtonListener.actionPerformed(MemoryGame.java:329)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Comment puis-je le résoudre?
Vous devez vous connecter pour publier un commentaire.
JOptionPane.showInputDialog(...)
méthodes de décrire ce qui est retourné lors de la fermeture de la boîte de dialogue si le bouton Annuler a été cliqué. Seule la méthode avec le plus grand nombre de paramètres prétend retournull
si l'utilisateur a cliqué sur Annuler.null
standard ou par défaut - il jamais eu pour eux de mentionner que dans les docs.. je suis sûr que nous pouvons supposer que, mais il serait agréable de voir que explicitement documentées. Ou au moins@see 'version this uses for more detail..'
.Si l'utilisateur clique sur "annuler",
input
sera nulle.Vous devez entrer le
try
bloquer uniquement si l'utilisateur clique sur "ok" ou vous devez ajouter unif
pour vérifier siinput
est null, avant de tenter de l'utiliser!Maintenant, vous pouvez désactiver le bouton annuler avec
ou de vérifier si l'utilisateur a cliqué sur annuler avec