Swing Alles beenden bei Fenster mit Scroll-Balken

Ich habe ein Fenster mit Scroll-Balken, das ich mit dem Kreuz rechts oben schließen kann.
Aber das (zugegebenermaßen sinnlose) Programm läuft nach dem Schließen weiter.
Kann ich erreichen, dass mit dem Schließen des Fensters auch das Programm beendet wird?
EXIT_ON_CLOSE statt DISPOSE_ON_CLOSE funktioniert leider nicht.

Java:
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;

public class LaufBalkenAllesSchliessen
{
  public static void main(String[] args)
   {
    JDialog dialog = new JDialog();
    dialog.setSize(300, 200);
    JPanel panel = new JPanel();  
   
    JScrollPane scrollPane = new JScrollPane
     (panel, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
    dialog.add(scrollPane);
   
    dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    dialog.setVisible(true);
   
    int i = 0; while(1==1){i++;}
   }
}
 
Das soll nichts.
Ich will nur wissen, ob ich erreichen kann, dass mit dem Schließen des Fensters auch das Programm beendet wird.
Ob das Programm etwas sinnvolles macht, oder nicht, ist dafür meiner Meinung nach egal.
 
Ähm kann ich so nicht unterschreiben. Weil das einzige was das Programm aufrecht erhalten soll, ist der Event-Dispatcher-Thread (UI-Thread) und wenn der geschlossen wird, dann soll alles andere geschlossen werden -> ergo graceful Shutdown. Nachdem du aber blockierst ist es klar, dass da nichts weiters passiert als unnützes Zeug.

Du könntest einen Window Listener dranhängen und auf Schließen hören und dann ein System#exit triggern. Das killt dir dann deine Execution (bad by design).
 
Java:
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("WindowClosingDemo.windowClosing");
                System.exit(0);
            }
        });
 
System.exit(0) repräsentiert -> das Programm ist jetzt abgeschlossen
0 bedeutet -> das Programm ist jetzt erfolgreich abgeschlossen es wird alles sauber beendet und gestoppt
 

Zurück
Oben