Modalen JDialog schließen, ohne dabei das Parent-Frame zu schließen

Status
Nicht offen für weitere Antworten.

Hutmacher

Bekanntes Mitglied
Hallo.
Ich habe ein JFrame, auf dem beim Schließen ganz einfach ein modaler JDialog aufgerufen wird (ein "Wirklich beenden? Ja / Nein", also auch mit
Code:
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
). Das Ganze realisiere ich mithilfe eines normalen JDialog, also ohne statics.
Wenn ich nun
Code:
schliessenFenster.setVisible(false)
&
Code:
schliessenFenster.dispose()
calle, wird das wartende JFrame mitgeschlossen.
< Den Sourcecode poste ich hier erst einmal nicht, da er ziemlich komplex ist, in der Hoffnung, dass dies ein generelles Problem ist :) >
 

javimka

Top Contributor
Ich habe es bei mir reproduzieren können. Wenn man das JFrame mit dispose() schliesst, schliesst sich auch der JDialog. Ist wohl ein genereller Effekt (nicht unbedingt Problem).
Du könntest dem Frame eine neue Methode geben, das das schliessen übernimmt, vielleicht sogar in Betracht ziehen, dispose zu überschreiben und dann den JDialog modal anzeigen, bevor du super.dispose() aufrufst.
 

Hutmacher

Bekanntes Mitglied
Ich habe es bei mir reproduzieren können. Wenn man das JFrame mit dispose() schliesst, schliesst sich auch der JDialog. Ist wohl ein genereller Effekt (nicht unbedingt Problem).
Du könntest dem Frame eine neue Methode geben, das das schliessen übernimmt, vielleicht sogar in Betracht ziehen, dispose zu überschreiben und dann den JDialog modal anzeigen, bevor du super.dispose() aufrufst.

Argh, da hab ich in meinem Post Quatsch geschrieben. Hab vergessen zu erwähnen, dass der Dialog bei mir schliessenFenster heißt^^'
Also ich schließe den Dialog & das Frame wird mitgeschlossen ... das ist ja das Komische =/
 

javimka

Top Contributor
Das kann ich tatsächlich nicht reproduzieren. Und bei beiden hast du setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); aufgerufen?

Kannst du nicht ein kleines Beispiel Programm machen, wo dieser Effekt auftritt?
 

Ein Keks

Bekanntes Mitglied
warum benutzt du eigentlich nicht einfach sowas:
Java:
JOptionPane.showConfirmDialog(<fenster>, "Wollen Sie wirklich beenden?", "Beenden", JOptionPane.YES_NO_OPTION);
 
Zuletzt bearbeitet:

Hutmacher

Bekanntes Mitglied
Danke erst mal, dass du mir hilfst =)
Ich zeige dir mal den Code für den ClosingAdapter, den einfach nur in ne Klasse (in Eclipse) namens WindowClosingAdapter packen:
Java:
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;

public class WindowClosingAdapter extends WindowAdapter
{
	public WindowClosingAdapter()
	{
		super();
	}
	
	//!!!!//!!!!//!!!!//!!!!
	// HIER wird das Schließen performt
	@Override
	public void windowClosing(WindowEvent event)
	{
		ClosingWindow schliessenWindow = new ClosingWindow(event.getWindow());
		schliessenWindow.setVisible(true);
	}
	
	class ClosingWindow extends JDialog
	{
	    public ClosingWindow(Window modalBlocker)
	    {
	    	super(modalBlocker, "Wirklich beenden?");
	    	addComponents();
	    	initializeSettings();
	    }
	    
	    private void addComponents()
	    {
	    	setLayout(new FlowLayout());
	    	Container contentPane = getContentPane();
	    	
	    	JLabel beendenLabel = new JLabel("Wollen Sie das Programm wirklich beenden?");
	    	contentPane.add(beendenLabel);
	    	
	    	//!!!!//!!!!//!!!!
	    	//Hier wird das Schließen ausgeführt
	    	JButton beendenButton = new JButton("Beenden");
	    	beendenButton.addActionListener(new ActionListener()
	    	{
	    			@Override
	    			public void actionPerformed(ActionEvent event)
	    			{
	    				System.exit(0);
	    			}
	    	});
	    	contentPane.add(beendenButton);
	    	
	    	//!!!!//!!!!//!!!!
	    	//Hier wird das Abbrechen ausgeführt, wobei aber das Hauptfenster 
	    	// geschlossen wird, komischerweise!
	    	JButton abbrechenButton = new JButton("Abbrechen");
	    	abbrechenButton.addActionListener(new ActionListener()
	    	{
    			@Override
    			public void actionPerformed(ActionEvent event)
    			{
    				ClosingWindow.this.setVisible(false);
					ClosingWindow.this.dispose();
    			}
	    	});
	    	contentPane.add(abbrechenButton);
	    	
	    }
	    
	    private void initializeSettings()
	    {
	    	setModal(true);
	    	setSize(275, 80);
	    	setResizable(false);
	    	setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
	    	setLocationInTheMiddleOfScreen();
	    }
	    
	    private void setLocationInTheMiddleOfScreen()
	    {
	    	Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
	    	Point middleOfScreen = new Point(screenSize.width / 2 - getSize().width / 2,
	    								     screenSize.height / 2 - getSize().height / 2);
	    	
	    	setLocation(middleOfScreen);
	    }
	}
}

Hier mal ein JFrame zum Testen:
Java:
import javax.swing.JFrame;

public class TestFrame extends JFrame
{
	public TestFrame()
	{
		super("TEST!");
		setSize(400, 400);
		addWindowListener(new WindowClosingAdapter());
                      //^^^^^^^^^^^ hier wird der Listener hinzugefügt

	}
}

Und die Main-Test-Klasse dafür:
Java:
public class Testing
{
	public static void main(String[] args)
	{
		
		TestFrame ib = new TestFrame();
		ib.setVisible(true);
	}

}

Du musst dir nicht den ganzen Code angucken, nur die markierten Schließteile^^
 

Ein Keks

Bekanntes Mitglied
das hauptfenster muss
Code:
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
gesetzt haben also in dem fall TestFrame
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C WIN XP Problem mit modalen Fenstern oder Dialogen Java Basics - Anfänger-Themen 5
M Ändern einer Socket-Eigenscheft aus einem modalen Dialog? Java Basics - Anfänger-Themen 6
A Jdialog nur 1x anzeigen Java Basics - Anfänger-Themen 2
D JButton in JDialog mit Action belgen Java Basics - Anfänger-Themen 6
J JDialog Zugriff auf parent JDialog Java Basics - Anfänger-Themen 5
J JDialog: wie kann ich ihn direkt als invisible erstellen Java Basics - Anfänger-Themen 7
A JDialog öffnet sich nicht Java Basics - Anfänger-Themen 7
D JDialog schließen Java Basics - Anfänger-Themen 11
I Veränderungen am JPanel vom JDialog aus Java Basics - Anfänger-Themen 6
H JDialog Problem Java Basics - Anfänger-Themen 10
H Problem JDialog.setVisible Java Basics - Anfänger-Themen 3
T Modales JDialog schliessen mit JButton Java Basics - Anfänger-Themen 2
I JDialog Problem Java Basics - Anfänger-Themen 37
J Icon JDialog mit Java 1.4 Java Basics - Anfänger-Themen 2
M JDialog Modality Java Basics - Anfänger-Themen 7
S JDialog resize zur Laufzeit PROBLEM!!! Java Basics - Anfänger-Themen 5
S JDialog und SwingUtilities Java Basics - Anfänger-Themen 6
M JDialog soll was an die AufruferKlasse zurück geben Java Basics - Anfänger-Themen 3
S Layout JDialog Java Basics - Anfänger-Themen 9
S eigene Methoden in JDialog Java Basics - Anfänger-Themen 13
pun Im JDialog auf Objekt im Parent JFrame zugreifen Java Basics - Anfänger-Themen 2
C Frame, JFrame, JDialog Java Basics - Anfänger-Themen 12
S Datenzugriff auf JDialog! Java Basics - Anfänger-Themen 8
A JDialog, Owner JFrame ZIEL: nciht in der taskbar Java Basics - Anfänger-Themen 9
E Übergabe von werten aus einem JDialog Java Basics - Anfänger-Themen 4
B Grafiken/Bilder mit Netbeans in Jdialog Java Basics - Anfänger-Themen 7
O Beim Schließen JDialog, im Frame-Owner eine Methode starten Java Basics - Anfänger-Themen 6
G JDialog + p aintComponent-Override Java Basics - Anfänger-Themen 3
A Klasse erbot von JDialog. Kontruktor? Java Basics - Anfänger-Themen 4
M Hauptfenster nicht wählbar bei offenem JDialog Java Basics - Anfänger-Themen 2
G Bei JDialog warten Java Basics - Anfänger-Themen 5
B Fenstergröße variiert bei JDialog.pack()-Aufruf Java Basics - Anfänger-Themen 10
S JDialog während automatischer Dateisuche einblenden Java Basics - Anfänger-Themen 6
J JDialog zeigt nichts an Java Basics - Anfänger-Themen 4
C JDialog Werte nach Frame übergeben Java Basics - Anfänger-Themen 10
G JDialog + setOpaque Java Basics - Anfänger-Themen 5
G JDialog auf Jpanel statt Frame? Java Basics - Anfänger-Themen 4
N Werte von JDialog entgegennehmen Java Basics - Anfänger-Themen 7
G JDialog-Status im Frame abfragen Java Basics - Anfänger-Themen 2
Bernasconi dynamisches JDialog Java Basics - Anfänger-Themen 2
T Register im JDialog Java Basics - Anfänger-Themen 9
G JDialog übers X schliessen und Programm beenden Java Basics - Anfänger-Themen 4
C Fehlermeldungen umleiten auf JDialog Java Basics - Anfänger-Themen 2
S new .() extends JDialog {.} Java Basics - Anfänger-Themen 15
M Button in einem JDialog mit Enter ausführen Java Basics - Anfänger-Themen 2
C FocusLost reagiert nicht bei JDialog Java Basics - Anfänger-Themen 5
E Von einem JDialog einen neuen JDialog aufrufen Java Basics - Anfänger-Themen 10
R JDialog schließen ( nicht mit dispose()! ) Java Basics - Anfänger-Themen 14
G JDialog Java Basics - Anfänger-Themen 15
M JDialog Java Basics - Anfänger-Themen 3
M JDialog basierend auf JDialog aufrufen Java Basics - Anfänger-Themen 4
B KeyListener beim JDialog Java Basics - Anfänger-Themen 4
E JDialog schließen Java Basics - Anfänger-Themen 9
S JDialog Frage Java Basics - Anfänger-Themen 2
G Wiedermal vererbung, extends JDialog extends Exception ? Java Basics - Anfänger-Themen 8
P JDialog funktioniert nicht? Java Basics - Anfänger-Themen 9
P JDialog & JProgressBar Java Basics - Anfänger-Themen 2
F JDialog per Button-Klick schliessen Java Basics - Anfänger-Themen 2
S JDialog einrichten Java Basics - Anfänger-Themen 4
G Owner von JDialog;Komme einfach nicht weiter Java Basics - Anfänger-Themen 4
G einfaches jdialog beispiel Java Basics - Anfänger-Themen 1
J Default Button bei jDialog Java Basics - Anfänger-Themen 2
M JDialog mit TextArea Java Basics - Anfänger-Themen 2
K JDialog aus einer anderen klasse einfügen Java Basics - Anfänger-Themen 2
S Auf JDialog aus anderer Datei zugreifen Java Basics - Anfänger-Themen 5
T j.u.Scanner(Sys.in).nextLine() wieder schließen? Java Basics - Anfänger-Themen 5
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
T jOptionPane zum schließen von Fenster, wie "Ja" und "Nein" anstatt Yes und No Java Basics - Anfänger-Themen 2
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
F Terminal Windows per Befehl schließen? Java Basics - Anfänger-Themen 9
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
L Scanner schließen in While-Schleife? Java Basics - Anfänger-Themen 2
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
F Java Programm schließen Java Basics - Anfänger-Themen 1
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
R Eine Schleife durch eine Methode schließen? Java Basics - Anfänger-Themen 4
J Seite öffnen und schließen Java Basics - Anfänger-Themen 2
b1ck Scanner schließen, erneute Verwendung Java Basics - Anfänger-Themen 12
A Input/Output Datenströme schließen in eigener Methode Java Basics - Anfänger-Themen 5
H Klassen Von Instanzvariablen auf Instanz schließen Java Basics - Anfänger-Themen 21
D JFrame - 10 Sekunden bis zum schließen warten. Java Basics - Anfänger-Themen 2
A Dialog schließt erst nach 2x Klicken auf Schließen Java Basics - Anfänger-Themen 2
K Methoden Schließen eines Fensters Java Basics - Anfänger-Themen 8
H JFrame komplett schließen Java Basics - Anfänger-Themen 3
J Socket schließen - Ist eine SocketException unumgänglich? Java Basics - Anfänger-Themen 4
X JFrame Fenster einzeln schließen Java Basics - Anfänger-Themen 2
L Schließen von Fenstern über Standartfunktion (X) Java Basics - Anfänger-Themen 11
F Erste Schritte Aktuelles Fenster durch Event schließen Java Basics - Anfänger-Themen 3
1 Programm schließen und Neustarten Java Basics - Anfänger-Themen 5
S Konsole schließen, nachdem Jar läuft Java Basics - Anfänger-Themen 5
T JFrame per Taste schließen Java Basics - Anfänger-Themen 15
M Erste Schritte Probleme mit Fenster Schließen Java Basics - Anfänger-Themen 6
S Fenster richtig schließen Java Basics - Anfänger-Themen 8
JAVAnnik Anwendung nach Schließen vom letzen Frame Java Basics - Anfänger-Themen 9
S nur neu geöffnetes Fenster schließen Java Basics - Anfänger-Themen 3
D Beim schließen --> Speichern?? Java Basics - Anfänger-Themen 11
T Windows Fenster Schließen Java Basics - Anfänger-Themen 4
F Textfenster lässt sich nicht schließen Java Basics - Anfänger-Themen 3
0 FireFox aus Java Applikation schließen Java Basics - Anfänger-Themen 10
J Fenster schließen? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben