# JFrame Close Problem



## Fuchs656 (22. Jul 2008)

Hallo,

versuche seit gestern eine Lösung für folgendes Problem zu finden.

Ich habe mit Netbeans eine Gui erstellt. Möchte jetzt gerne dass bei beenden des Programms, bei drücken auf X (rechte obere Ecke), das Programm bevor es beendet den Benutzer noch fragt ob er das wirklich will.

Mit folgenden Code funktioniert es leider nicht:

```
JFrame mainFrame = ChannelEditorApp.getApplication().getMainFrame();
mainFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        
mainFrame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e){
                //Hier kommt die Abfrage hin
               System.exit(0);

                
            };
            
            public void windowClosed(WindowEvent e){
                
            };
       }
```

Das Ergebniss ist dass das Fenster schließt aber der Prozess im Hintergrund weiter läuft.

Entferne ich den Code bis auf die Zeile 

```
JFrame mainFrame = ChannelEditorApp.getApplication().getMainFrame();
```
So verhählt es sich komischer weise immer noch gleich. Erst wenn ich alles entferne beendet das drücken auf X den Prozess.

Diesen Code füge ich am Ende der Initalisieruns-Funktion ein.

Würde mich darüber freuen wenn jemand eine Ahnung hätte was ich da falsch mache.

mfg Fuchs


----------



## Verjigorm (22. Jul 2008)

So in etwa:

```
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;


public class WindowTest extends JFrame
{
	private static final long serialVersionUID = 1L;

	public WindowTest() 
	{
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		
		addWindowListener(new WindowAdapter() {

			@Override
			public void windowClosing(WindowEvent e) 
			{
				if(JOptionPane.OK_OPTION == JOptionPane.showConfirmDialog(WindowTest.this, "Fenster wirklich schliessen?"))
				{
					System.out.println("Fenster wird geschlossen");
					dispose();
					//oder
					//System.exit(0);
				}
				else
				{
					System.out.println("Fenster bleibt offen");
				}
			}
			
		});
		
		setSize(200, 200);
		setLocation(200, 200);
		setVisible(true);
	}
	
	public static void main(String[] args) 
	{
		new WindowTest();
	}

}
```


----------

