JDialog schließen

Status
Nicht offen für weitere Antworten.

Elephant

Aktives Mitglied
Hallo,

ich möchte einen modalen JDialog öffnen. Jetzt soll bei einem Klick auf einen Button in dem JDialog ein weiterer JDialog geöffnet werden, in dem z.B. eine Vorschau angezeigt wird oder eine Website o.ä.

Eigentlich hab ich gedacht, dass das ziehmlich einfach sein müsste, aber ich habs jetzt mit JDialog und auch mit JFrame versucht aber das Problem ist, dass ich den 2. Dialog, nachdem er geöffnet wurde, erst schließen kann, wenn der 1. Dialog geschlossen wurde. Davor reagiert er auch z.B. der WindowListener nicht. Ich weiß nicht genau warum das so ist und vor allem weiß ich auch nicht wie sich das Problem lösen lässt. Wenn der 1. Dialog nicht modal ist, lässt sich das zusätzliche Fenster normal schließen.

Ich schreibe hier mal eine ganz einfache Testklasse hin, mit der man das Problem sehen kann.

Code:
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;


public class Test2 {


    public Test2() {

        JDialog test = new JDialog();
        test.setModal(true);

        JButton button = new JButton("Open Window");

        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                JDialog window = new JDialog();
                window.add(new JLabel("Test"));
                window.pack();
                window.setVisible(true);
            }
        });

        test.add(button);

        test.pack();
        test.setVisible(true);
    }

    public static void main(String[] args) {
        Test2 test = new Test2();
    }
}


Weiß jemand wo mein Fehler liegt?
 

SebiB90

Top Contributor
was ist wenn du modal true weg lässt?
geht es dann?
eigentlich kann es das nicht sein aber was anderes seh ich im code nicht
 

Elephant

Aktives Mitglied
Also wenn ich setModal(true) weglasse, dann ist der 1. Dialog ja nicht mehr modal. Das ist ja das Problem, wenn er nicht modal ist, funktioniert alles, dann lässt sich der 2. Dialog schließen, aber nicht wenn er modal ist.
 

Bleiglanz

Gesperrter Benutzer
verwende mal beim zweiten einen anderen Konstruktor

z.B. Dialog(Dialog owner, String title, boolean modal)

so wie du das machst, hast du zwei völlig unabhängige native Fenster erzeugt...

und das erste ist modal, also hängt wahrscheinlich alles
 

Elephant

Aktives Mitglied
Also ich versuch noch mal genauer zu erklären warum ich das brauche.

Wenn der Benutzer z.B. einen modalen Dialog aufruft und dort irgendwelche Eingaben macht, dann möchte ich es z.B. ermöglichen, dass gleichzeitig die Hilfe geöffnet werden kann oder offen ist. D.h. aber dass alles andere blockiert bleiben muss nur die Hilfe und der modale Dialog funktionieren halt.
 

Elephant

Aktives Mitglied
@Bleiglanz
also wenn ich dem 2. Dialog den 1. Dialog als owner übergebe, funktioniert das schließen, der 2. Dialog wird dann aber mitgeschlossen, wenn der 1. geschlossen wird (geht vielleicht, ist aber vielleicht nicht so praktisch). Wenn ich einen anderen JFrame als owner übergebe, lässt sich der 2. Dialog wieder nicht schließen.
 

SebiB90

Top Contributor
ich hab jetzt mal rumprobiert und die lösung gefunden
du musst nur setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); ausführen auf den dialog
also:
Code:
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.border.*; 
import java.awt.*; 


public class Test2 { 


    public Test2() { 

        final JDialog test = new JDialog(); 
        test.setModal(true); 

        JButton button = new JButton("Open Window"); 

        button.addActionListener(new ActionListener() { 
            public void actionPerformed(ActionEvent e) { 
                JDialog window = new JDialog(test, false); 
                window.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
                window.add(new JLabel("Test")); 
                window.pack(); 
                window.setVisible(true); 
            } 
        }); 

        test.add(button); 

        test.pack(); 
        test.setVisible(true); 
    } 

    public static void main(String[] args) { 
        Test2 test = new Test2(); 
    } 
}
 

Elephant

Aktives Mitglied
Vielen Dank für Eure Hilfe.

So klappt es jetzt auch fast so wie ich es gerne hätte. Nur ist jetzt der 2. Dialog 'abhängig' vom 1. Dialog. Der 2. Dialog ist immer über dem 1. Dialog und wenn der 1. Dialog geschlossen wird, schließt sich auch der 2.

Gibt es eine Möglichekeit, dass ein bestimmtes Fenster/Dialog immer 'benutzbar' bleibt, eben wie eine Hilfe, die sich nicht schließt, wenn man den 1. Dialog schließt, und die auch im Hintergrund geöffnet bleiben kann?
 

Leroy42

Top Contributor
Ich habe zwar nicht den ganzen Thread verfolgt oder den geposteten Code
analysiert, aber ich frage mal ganz dumm: Was hindert dich daran einen
nicht-modalen Dialog oder einfach ein weiteres JFrame für deine Hilfe zu
nehmen?

Wenn Aktivitäten (Benutzen eines Sliders, Auswählen eines Radio-Buttons, ....)
in deinem Dialog-Frame ausgeführt werden kann doch einfach eine zugeordnete
Methode des Hauptfensters ausgeführt werden.

Oder verstehe ich da was falsch?
Oder ist heute schon Freitag? :shock:
 

Elephant

Aktives Mitglied
Also ich weiß nicht, ob ich das jetzt richtig verstehe, was Du meinst.

Ich habe schon versucht, aus dem 1. Dialog eine Methode aufzurufen, die in einer anderen Klasse liegt (diese ist abgeleitet von JFrame) die dann einen weiteren Dialog erstellt u. öffnet mit dem JFrame als owner, aber dabei ist es genauso. Der 2. Dialog hängt irgendwie mit dem 1. Dialog zusammen, man kann ihn nicht schließen, erst wenn der 1. Dialog geschlossen ist.

Ich hab schon ziehmlich viel hin und her probiert habs aber nicht hinbekommen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JDialog schließen Java Basics - Anfänger-Themen 11
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
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