Java

NetzUnity und Informatik-forum wurden zusammengelegt. Eine entsprechende Ankündigung wird demnächst noch folgen. Für 2025 ist hier einiges geplant! Bei Fragen bitte per DM an Maximilian Rupp wenden.
  • [EDIT: War kein sehr aussagekräftiger Subject]

    Weiß jemand, warum dieses Java-Programm (zumindest auf meinem Rechner) nicht terminiert?


    import javax.swing.*;

    ...
    ...

    String eingabe = "<keine Eingabe>";

    eingabe = JOptionPane.showInputDialog("Text eingeben");

    System.out.println("Es wurde " + eingabe + " eingegeben");

    // System.exit(0);

    :confused:

    "in 1000 years, we will be living machines, or dead gods"

  • Das Problem ist der JOptionPane, der eigentlich für die Verwendung in Swing-Applikationen gedacht ist.

    Den Dialogen vom JOptionPane muss daher immer eine Elterncomponente zugeordnet werden. Das kannst Du entweder beim Erzeugen mit angeben
    [ JOptionPane.showInputDialog(java.awt.Container, javax.String); ]
    ,oder es wird, wie in Deinem Fall, ein default Frame erzeugt.
    Das hat dann den unangenehmen Effekt, das der Pane nicht g'scheit terminiert wird.

    Die Lösung ist aber sehr einfach: Wenn Du Dein Programm mit einem System.exit(0); beendest, wird das ganze Programm und damit auch der JOptionPane terminiert.

    Bejo

  • Für mich war allein die Notwendigkeit eine Konsolenanwendung mit System.exit(0) beenden zu müssen ein Indiz dafür JOptionPanes hier NICHT zu verwenden.
    Das mit dem Default-Frame ist aber nachvollziehbar. Swing-Anwendungen werden ja ebenfalls auf diese Art und Weise beendet.

    Danke,
    subatomic

    "in 1000 years, we will be living machines, or dead gods"

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!