# Zusätzliches Fenster mit OK-Button schließen



## 23paul23 (3. Dez 2010)

Hallo, 

ich erzeuge eine Tabelle (Fenster 1). Durch drücken des Buttons "Neue Tabelle" wird eine neue Tabelle in einem zweiten Fenster erzeugt. 
In dieser neuen Tabelle habe ich ein OK-Button. Wenn ich das OK-Button drücke, dann möchte ich eine bestimmte Operation ausführen und NUR das zusätzliche Fenster (Fenster 2) schließen und das Fenster 1 soll weiterhin zu sehen sein. 

Mit meinem Code schließen sich aber beide Fenster. 


```
okButton.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					KlasseA klasse = new KlasseA();
					System.exit(0);  // mit dieser Zeile schließen sich beide Fenster
					klasse.fuehreIrgendEineOperationAus();
					
				}
			});
```

Ich habe per Forum oder Google entweder System.exit(0) oder setDefaultCloseOperation(EXIT_ON_CLOSE) gefunden. Wobei das zweit nicht für ein Button sondern für ein JFrame zu verwenden ist. 

Was kann ich da machen? Vielen Dank


----------



## eRaaaa (3. Dez 2010)

23paul23 hat gesagt.:


> Ich habe per Forum oder Google entweder System.exit(0) oder setDefaultCloseOperation(EXIT_ON_CLOSE) gefunden. Wobei das zweit nicht für ein Button sondern für ein JFrame zu verwenden ist.



Naja, System.exit o.ä. haut halt die ganze VM wech 
Du kannst ja einfach das neue Fenster unsichtbar machen (setVisible(false)) oder dispose() dort aufrufen! Natürlich auch wieder an dem Fenster, nicht am Button, das macht ja auch gar keinen Sinn!


----------



## U2nt (3. Dez 2010)

Ruf im actionPerformed des OK-Buttons die Methode "dispose();" auf. Also angenommen dein erstes Fenster heißt frame1, das Zweite frame2:


```
frame2.dispose();
```

Anstatt System.exit(0); aufzurufen.

Wenn du NUR das eine Fenster per dem X schließen willst, setzt du die DefaultCloseOperation auf JFrame.DISPOSE_ON_EXIT (glaub heißt so )

Edit: Vorposter kam mir zuvor


----------



## 23paul23 (3. Dez 2010)

vielen dank... obwohl ich nach dem okButton... "frame.setVisible(true) stehen habe, bin ich nicht drauf gekommen, diese einfach im actionPerformed auf false zu setzen


----------



## U2nt (3. Dez 2010)

23paul23 hat gesagt.:


> vielen dank... obwohl ich nach dem okButton... "frame.setVisible(true) stehen habe, bin ich nicht drauf gekommen, diese einfach im actionPerformed auf false zu setzen



Ich würds lieber mit dispose machen...


----------



## Volvagia (3. Dez 2010)

Pass bei DISPOSE_ON_CLOSE aber auf. Hat bei mir nicht immer richtig funktioniert. Das Fenster verschwindet zwar, das Programm beendet aber nicht.


----------



## U2nt (3. Dez 2010)

Volvagia hat gesagt.:


> Pass bei DISPOSE_ON_CLOSE aber auf. Hat bei mir nicht immer richtig funktioniert. Das Fenster verschwindet zwar, das Programm beendet aber nicht.



Das ist der Sinn davon. Denn er will nicht sein Programm schliessen, sondern nur das Extra-Fenster


----------



## Volvagia (3. Dez 2010)

Klar, aber ich meinte allgemein. Wenn das Letzte Fenster mit DISPOSE_ON_CLOSE geschlossen wird, beendet das Programm trotzdem nicht immer, auch wenn kein Nicht-Dämon mehr läuft.

Kann aber auch nur ich haben, Java macht bei mir nicht immer genaus das, was es soll.


----------

