Ich möchte ein Eingabedialogfeld erstellen, wenn ein neuer Datensatz erstellt wird, und die Benutzereingabe als input
in der Datei speichern. HierFehler beim Abbrechen des showInputDialogs
ist der 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){}
Wenn kein Eingang Benutzer oder jede Eingabe, die OK
Taste Arbeit in Ordnung, aber wenn ich die cancel
Schaltfläche klicken, gibt es diese Fehler:
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)
Wie kann ich es lösen?
Dank Abbrechen geklickt hat. Es funktioniert gut. Entschuldigung nochmal für meine kleine Frage. – Chin
Es kann von Nutzen sein, zu erwähnen, dass nicht alle 'JOptionPane.showInputDialog (...)' Methoden beschreiben, was beim Schließen des Dialogs zurückgegeben wird, wenn auf die Schaltfläche Abbrechen geklickt wurde. Nur die Methode mit der größten Anzahl von Parametern gibt an, dass 'null' zurückgegeben wird, wenn auf 'Abbrechen' geklickt wurde. – Timmos
@Timmos Guter Punkt. Die Java-Dokumente können manchmal etwas stumpf sein und Wissen voraussetzen, das für den Benutzer (uns) nicht offensichtlich ist. Ich kann den Programmierer fast sehen, da sie den Quellcode geöffnet hatten und Codekommentare schreiben mussten. Es war ihnen "offensichtlich" als jede kürzere Version, die mehr Operanden-Version mit "Null" oder Standardvorgaben genannt wurde - also ist es ihnen nie * aufgefallen, das in den Dokumenten zu erwähnen. Ich bin ziemlich sicher, dass wir davon ausgehen können, aber es wäre schön, das explizit dokumentiert zu sehen. Oder zumindest '@see'-Version, die für mehr Details verwendet wird. –