ich habe ein JOptionPane.showConfirmDialog. Wenn ich den Dialog abbreche bekomme ich in der Konsole die Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Hauptfenster$MenuAktion.actionPerformed(Hauptfenster.java:85)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Was habe ich wohl vergessen abzufangen. Mit Eingabe und Ok ist alles super.
input = JOptionPane.showConfirmDialog();
if( input != null) {
//das was du machen willst wenn was gedrückt wurde
} else {
//und hier halt das was passieren soll wen abbgebrochen wurde.
}
eigentlich berücksichtige ich nicht null, denn wenn das der Dialog abgebrochen wird, soll das Fenster nur geschlossen werden. Warum sollte ich den Rückgabewert null berücksichtigen?
Du mußt das null aber berücksichtigen. Denn es kann vorkommen, und über diesen Rückgabewert kann dein Programm erkennen das der Dialog abgebrochen wurde. Wie soll es das sonst erkennen?
wenn du nur den
Code:
if (input != null ) {
}
hats reicht das auch meist. Poste doch mal ein wenig von deinem Code vor und nach dem Dialog sonst sind so Ferndiagnosen meißt recht spekulativ.
mini Bsp. sie oben in meinem Post. Zeig mal deinen Code. Vermutlich machst Du standard mäßig etwas mit dem Rückgabewert des Dialogs, nicht beachtend das der auch null zurückliefern kann.
// wenn der Menutext gleich Test ist dann zeige den Dialog an
if (e.getActionCommand() == "Test") {
String name = JOptionPane.showInputDialog(null, "Testfrage","Testdialog", JOptionPane.ERROR_MESSAGE);
if ( name.equals("TestTest")) {
JOptionPane.showMessageDialog(null, "Richtige Antwort.");
}
else if ( name.equals("Hallo")) {
JOptionPane.showMessageDialog(null, "Das ist nicht ganz richtig. :-)");
}
}
// wenn der Menutext gleich Test ist dann zeige den Dialog an
if (e.getActionCommand() == "Test") {
String name = JOptionPane.showInputDialog(null, "Testfrage","Testdialog", JOptionPane.ERROR_MESSAGE);
if (name!=null) {
if ( name.equals("TestTest")) {
JOptionPane.showMessageDialog(null, "Richtige Antwort.");
} else if ( name.equals("Hallo")) {
JOptionPane.showMessageDialog(null, "Das ist nicht ganz richtig. :-)");
}
}
}
So gehts.
Bevor du mit dem Rückgabewert arbeitest, musst du überprüfen, ob der ungleich null ist. Sonst ist da nichts zum vergleichen.