JDialog schließen

Abend.
Ich hab folgendes Problem,
Ich öffne mit dem Bestätigen eine "Eigenschaften" Buttons ein JDialog, wo wiederum ein "OK"
Button drauf ist.
Mit dem betätigen des "OK" buttons sollte jetzt als letztes auch das JDialog wieder geschlossen werden.
Ist mir fast schon ein bisschen peinlich sowas einfaches zu fragen,
aber ich weiß grade einfach nicht weiter.

Ich kenne zwar System.exit(0); , allerdings fällt das weg, weil mein "Hauptfenster" ja offen bleiben soll.
Erst habe ich gedacht, das es mit dispose(); geht, so steht es jedenfalls überall,
allerdings schließt sich dann auch nur mein "Hauptfenster" und das JDialog bleibt offen.
Stehe grade einfach irgendwie auf dem Schlauch.

Mein ganzen Code konnte ich grade leider nicht posten. Zu lang.
Liegt vermutlich daran, weil ich so unglaublich unefektiv programmiere,
und die Sache dadurch einen rießen Bart bekommt. :D

Der restliche Code funktioniert soweit.


Hier der Actionlistener in dem das JDialog erstellt und aufgerufen wird.

Java:
//ActionListener für die Einstellungen
    private class settingAction extends AbstractAction{
    	public settingAction() {
            this(null);
        }
    	public settingAction(String text) {
            this(text, null);
        }
    	public settingAction(String text, Icon icon) {
            super(text, icon);
        }
    	
    	public void actionPerformed(ActionEvent e) {
    	
    	//Unterklasse für das einstellungenfenster
    	final class setting extends JDialog{
    		//Konstruktor
    		public setting(){
    			
    		    	Container settingContainer = getContentPane();
    		    	JPanel settingPanelNORTH1 = new JPanel(new GridLayout(1,7));
    		    	JPanel settingPanelNORTH = new JPanel(new GridLayout(3,1));
    		    	JPanel settingPanelCENTER = new JPanel(new GridLayout(1,7));
    		    	JPanel settingPanelSOUTH = new JPanel(new GridLayout(2,3));
    		    	
    		    	//Überschrifften
    		    	JLabel settingHeadline = new JLabel("Stellen Sie den Zeitpunkt ein, ab dem                                Objekte makiert werden sollen.");
    		    	settingPanelNORTH.add(settingHeadline);
    		    	JLabel buffer10 = new JLabel("");
    		    	settingPanelNORTH.add(buffer10);
    		    	settingPanelNORTH.add(settingPanelNORTH1);
    		    	
    		    	JLabel settingHeadline1 = new JLabel("Tag");
    		    	settingPanelNORTH1.add(settingHeadline1);
    		    	JLabel settingHeadline2 = new JLabel("Monat");
    		    	settingPanelNORTH1.add(settingHeadline2);
    		    	JLabel settingHeadline3 = new JLabel("Jahr");
    		    	settingPanelNORTH1.add(settingHeadline3);
    		    	JLabel buffer = new JLabel("     um");
    		    	settingPanelNORTH1.add(buffer);
    		    	JLabel settingHeadline4 = new JLabel("Stunde");
    		    	settingPanelNORTH1.add(settingHeadline4);
    		    	JLabel settingHeadline5 = new JLabel("Minute");
    		    	settingPanelNORTH1.add(settingHeadline5);
    		    	JLabel settingHeadline6 = new JLabel("Sekunde");
    		    	settingPanelNORTH1.add(settingHeadline6);
    		    	;
    		    	
    		    	//Liste 1	/ Objekt und Inhalt global erstellt
   
    		    	settingPanelCENTER.add(settingBox1);
    		    	settingBox1.setToolTipText( "Wählen sie den Tag, nach dem aktualisiet wird" );
    		    	settingBox1.setEnabled( true );
    		    	
    		    	//Liste 2	/ Objekt global erstellt
    		    	
    		    	settingPanelCENTER.add(settingBox2);
    		    	
    		    	settingPanelCENTER.add(settingBox3);
    		    	JLabel buffer2 = new JLabel("     um");
    		    	settingPanelCENTER.add(buffer2);
    		    	
    		    	settingPanelCENTER.add(settingBox4);
    		    	
    		    	settingPanelCENTER.add(settingBox5);
    		    	
    		    	settingPanelCENTER.add(settingBox6);
    		    	
    		    	//Buttons
    		    	JLabel buffer3 = new JLabel("");
    		    	settingPanelSOUTH.add(buffer3);
    		    	JLabel buffer4 = new JLabel("");
    		    	settingPanelSOUTH.add(buffer4);
    		    	JLabel buffer5 = new JLabel("");
    		    	settingPanelSOUTH.add(buffer5);
    		    	//OK Button
    		    	JButton settingButtonOK = new JButton(new settingOKaction("OK"));
    		    	settingPanelSOUTH.add(settingButtonOK);
    		    	settingButtonOK.setToolTipText( "Bestätigen Sie ihre Eingabe mit OK" );
    		    	settingButtonOK.setEnabled( true );
    		    	JLabel buffer6 = new JLabel("");
    		    	settingPanelSOUTH.add(buffer6);
    		    	//Panels auf Container
    		    	settingContainer.add(settingPanelNORTH, BorderLayout.NORTH);
    		    	settingContainer.add(settingPanelCENTER, BorderLayout.CENTER);
    		    	settingContainer.add(settingPanelSOUTH, BorderLayout.SOUTH);
    				}
    		//Konstruktor Ende

            
            }
    	JDialog settingWindow = new setting();
    	settingWindow.setTitle("Einstellungen");
    	settingWindow.pack();
    	settingWindow.setSize(415, 150);
    	settingWindow.setLocation(400, 300);
    	settingWindow.setModal(true);
    	settingWindow.setResizable(false);
    	settingWindow.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    	settingWindow.setVisible(true);
    	settingWindow.setLocation(400, 100);
    	}
    }


Actionlistener wo das JDialog geschlossen werden soll.

Java:
 private class settingOKaction extends AbstractAction{
    	public settingOKaction() {
            this(null);
        }
    	public settingOKaction(String text) {
            this(text, null);
        }
    	public settingOKaction(String text, Icon icon) {
            super(text, icon);
        }
    	
    	public void actionPerformed(ActionEvent e) {	
    		greenDate.set(year, month , day, hour, minute, second);
    		//System.exit(0);
    		//dispose();
    		
    	}
    }
 
ja sowas denke ich mir auch, sonst würde die sich ja nicht schließen.

Weiß halt nicht, wo/ wie ich der sagen soll, was sie schließen soll.

siehe zeile 17 unten (kommentiert)
dort hab ich einfach dispose(); geschrieben.
aber ich kann ja gar nicht sowas wie

settingWindow.dispose(); schreiben.

meine class settingOKaction kennt ja wieder settingWindow nicht.
 

Volvagia

Top Contributor
Da sie private ist muss es sich um eine innere Klasse handeln.
In welcher Klasse hast du sie denn definiert? Kennt die den Dialog nicht?
 

Kevin94

Top Contributor
Ich nehme mal an an, dass der Button immer auf dem Dialog liegt, dann geht folgendes:
Java:
public void actionPerformed(ActionEvent e) {    
    greenDate.set(year, month , day, hour, minute, second);
    SwingUtilities.windowForComponent(e.getComponent()).dispose();
}
 
Also, ich kann dir jetzt nur sagen, so wie ich das verstanden habe.

public void dispose(); ist eine methode die von der klasse JDialog zu verfügung gestellt wird.
Jetzt hab ich mir gedacht, wenn ich oben Zeile 16, eine class setting schreibe und extends JDialog dazu schreibe,
dann kann mein objekt settingWindow Zeile 92 oben, auch dispose() ausführen.
Das geht auch.
Allerdings möchte ich dispose() unten aufrufen, in der class settingOKaction ab Zeile 1 unten.

Mehr weiß ich nicht, mehr kann ich dazu nicht sagen.
Ich hab einfach keine Ahnung wie das gehen soll.

Was du jetzt mit private meinst, verstehe ich nicht.
dispose() ist doch public
 
Zuletzt bearbeitet:

@Kevin94

Ich nehme mal an an, dass der Button immer auf dem Dialog liegt, dann geht folgendes:

Ja, der Button liegt nur und immer auf dem Dialog.

wenn ich das
Java:
SwingUtilities.windowForComponent(e.getComponent()).dispose();

einfach so übernehme, (ohne das ich weiß was da passiert),
bekomme ich follgende Fehlermeldung von eclipse
The method getComponent() is undefined for the type ActionEvent

Angebotene lösungen sind dann
1. add cast to 'e'
2. rename in file


wenn ich 1 auswähle,
sieht die Sache so aus
SwingUtilities.windowForComponent(((ComponentEvent) e).getComponent()).dispose()
;
ich bekomme aber wieder eine Fehlermeldung
Cannot cast from ActionEvent to ComponentEvent

€sorry für doppelpost, sollte eigentlich ein edit werden.
verklickt
 

Kevin94

Top Contributor
Meine Schuld, hab vergessen, das es getComponent in ActionEvent nicht gibt. Dann eben so:
Java:
public void actionPerformed(ActionEvent e) {    
    greenDate.set(year, month , day, hour, minute, second);
    SwingUtilities.windowForComponent((Component)e.getSource()).dispose();
}
 

Kevin94

Top Contributor
Mal von Innen nach Aussen, bzw. in der Ausführungsreihenfolge:
Code:
e.getSource() // Der Button der gedrückt wurde
(Component) // Cast weil die Methode mit Object definiert ist
SwingUtilities.windowForComponent //sagt der Name schon, liefert das Fenster auf dem das übergebene Component-Objekt, also dein Button, sitzt. Bei dir ist das der JDialog
.dispose() // Naja, das schliesen des Fensters halt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Modalen JDialog schließen, ohne dabei das Parent-Frame zu schließen Java Basics - Anfänger-Themen 7
O Beim Schließen JDialog, im Frame-Owner eine Methode starten Java Basics - Anfänger-Themen 6
R JDialog schließen ( nicht mit dispose()! ) Java Basics - Anfänger-Themen 14
E JDialog schließen Java Basics - Anfänger-Themen 9
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
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
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
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
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
M Befehl zum Fenster schließen? GUI Java Basics - Anfänger-Themen 3
S Programm gestartet - nun schließen? Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben