kostenloser Webspace werbefrei: lima-city


showInputDialog Escape = Exception

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    Nabend,

    wie ich bereits in einem anderen Thread schrieb, lerne ich seit gestern Java. So weit, so gut. Zur Zeit arbeite ich an einem BMI-Rechner mit Benutzereingabe.

    Das funktioniert auch alles schon relativ gut (obgleich es unter Garantie ausbaufähig wäre), jedoch stört mich folgendes:

    String gewicht = JOptionPane.showInputDialog(
    null,
    "Wie schwer sind Sie?",
    "BMI Berechnung",
    JOptionPane.QUESTION_MESSAGE);
    
    if(gewicht == null) {
        JOptionPane.showMessageDialog(
        null,
        "Die Anwendung wird beendet.",
        "Programmabbruch",
        JOptionPane.ERROR_MESSAGE); // Funktioniert nicht?!
        
        return;
    }


    Das funktioniert aber so nicht da:

    Exception in thread "main" java.lang.NullPointerException


    sobald man ESC drückt, oder das Feld leer lässt.

    Das war so ein Versuch. Letztlich möchte ich einfach nur bezwecken, dass beim Drücken von Escape eben keine Exception geworfen wird, sondern der Dialog "Die Anwendung wird beendet." angezeigt wird. Jedoch soll das nicht passieren, wenn man das Feld leer lässt und Enter drückt.

    Ich hoffe ihr versteht, was ich meine und habt eine Idee, wie ich das Problem lösen bzw. mein Vorhaben umsetzen kann :D

    Beitrag zuletzt geändert: 9.5.2012 21:00:22 von fabo
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Wo wird da denn eine Exception geworfen? Die verschiedenen Varianten von JOptionPane.showInputDialog können höchstens eine HeadlessException werfen. Und die wird nur geworfen, wenn die entsprechenden Ein- und Ausgabegeräte nicht vorhanden sind. Und ich nehme mal an, dass dies bei dir nicht das Problem ist.

    Wenn man das Feld leer lässt und Enter drückt bekommt man den leeren String "" zurückgeliefert. Wenn man auf Abbrechen oder Escape drückt kriegt man den Wert null.

    Und was jetzt genau nicht funktioniert, kann ich auch nicht nachvollziehen.

    Falls es dir darum geht, wie du das Programm beenden kannst, so musst du nur folgendes machen:
    System.exit( 0 );

    Und anstatt 0 kannst du jeden anderen Errorcode auswählen.

    Beitrag zuletzt geändert: 9.5.2012 21:16:33 von bladehunter
  4. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    Wie gesagt... Drücke ich ESC bzw. Abbrechen, erscheint nicht wie gewünscht die Messagebox, sondern

    Exception in thread "main" java.lang.NullPointerException


    So sieht mein Code zZt. aus:

    String gewicht = JOptionPane.showInputDialog(
    null,
    "Wie schwer sind Sie?",
    "BMI Berechnung",
    JOptionPane.QUESTION_MESSAGE).replace(',', '.');
    
    if(gewicht == null) {
        JOptionPane.showMessageDialog(
        null,
        "Die Anwendung wird beendet.",
        "Programmabbruch",
        JOptionPane.ERROR_MESSAGE);
        
        System.exit(0);
    }
    else if(gewicht.length() == 0) {
        JOptionPane.showMessageDialog(
        null,
        "Gewicht muss angegeben werden!",
        "Fehler",
        JOptionPane.ERROR_MESSAGE);
    }
  5. In der Fehlermeldung steht irgendwo die Zeilennummer in der der Fehler liegt.
    Vielleicht hilft dir das weiter.
  6. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    Leider nein, da der Fehler laut Meldung in der Zeile liegt:

    String gewicht = JOptionPane.showInputDialog(
  7. String gewicht = JOptionPane.showInputDialog(
    null,
    "Wie schwer sind Sie?",
    "BMI Berechnung",
    JOptionPane.QUESTION_MESSAGE);


    Ich glaube du Darfst hier nicht "null" übergeben.
    Du musst das darunter liegende frame übergeben.

    Ein Beispiel dazu:
    http://www.devdaily.com/java/joptionpane-showinputdialog-examples
  8. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    a jframe here isn't strictly necessary, but it makes the example a little more real


    Ich nutze in meinem Script keine Frames :D Aber auch das habe ich (erfolglos) ausprobiert.
  9. Sry hab ich übersehen.

    Da die Exceptionja nur kommt wenn du abbrichst kannst du ja einfach die Exception mit einem try-catch abfangen, und einfach deine eigene Fehlermeldung ausgeben.
  10. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    Ich habe den Fehler gefunden. Hinter den Input Dialogen stand noch etwas, was ich nicht gesehen hatte... Kaum entfernt, ist das Problem gelöst.

    Danke trotzdem und bis zum nächsten Problem :D
  11. fabo schrieb:
    a jframe here isn't strictly necessary, but it makes the example a little more real


    Ich nutze in meinem Script keine Frames :D Aber auch das habe ich (erfolglos) ausprobiert.

    Dein Programm als "Script" zu bezeichnen ist eigentlich nicht richtig. Es ist einfach nur ein Programm.

    Und für den Fall, dass du da etwas verwechseln solltest: "Frames" sind in Java Fenster. Der bekannteste Vertreter dieser Art ist die Klasse JFrame. Und der erste Parameter von showInputDialog kann (aber muss nicht) ein Objekt von diesem Typ sein. Wenn du ein solches Objekt übergibst, wird das Fenster, zu dem das Objekt gehört, für den User blockiert, so dass er erst den Input-Dialog ausfüllen muss, bevor das Programm weiterlaufen darf.


    Man sollte sich nicht zusehr auf Zeilennummern von Fehlermeldungen verlassen. Meistens stimmen sie zwar, aber eben nicht immer.
  12. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    bladehunter schrieb:
    Man sollte sich nicht zusehr auf Zeilennummern von Fehlermeldungen verlassen. Meistens stimmen sie zwar, aber eben nicht immer.
    Die Zeilennummer sagt nur wo der Fehler auftritt (und diese Zeilennummer stimmt auch, verwirren kann das erst wenn der Befehl mehr als 1 Zeile lang ist), der Grund für den Fehler muss aber nicht dort liegen, falls du das meinst.

    bladehunter schrieb:
    Dein Programm als "Script" zu bezeichnen ist eigentlich nicht richtig. Es ist einfach nur ein Programm.
    Einfache Merkregel: alles was du mit einem Compiler übersetzen musst ist ein Programm (Bsp. C/JAVA/...), alles wo du den Quellcode mit einem Interpreter ausführen kannst nennt man Script (Bsp. JavaScript/PHP/PERL/...).
  13. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    Danke für eure Hilfe :)
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!