JDialog statt JFrame

Also ich will auf einem JDialog den Fortschritt eines Prozesses per JProgressBar anzeigen - soweit so gut
Ich will zusätzlich dem Dialog einen Owner zuweisen und modal machen - auch das ist kein Problem.
Ich hab vorher einen JFrame benutzt (den man nicht modal setzen kann), aber bei dem JDialog läuft der Compiler nicht weiter (beim Frame schon - so kann man schön den Fortschritt anzeigen)
Also kennt ihr vil einen Weg das sich der Dialog genauso verhält wie ein Frame oder das man einen Frame einen Owner zuweisen kann und modal setzen kann?
Lg Monkey
 
C

Camino

Gast
modal bedeutet doch, dass es in dem anderen Fenster erst dann weitergeht, wenn der Dialog beendet/geschlossen wurde. Was genau passiert denn während dem Dialog in deinem aufrufenden Fenster?
 
Ich habs aber auch versucht wie der Dialog nicht modal war und der Compiler hat trozdem nicht weiter gemacht.
Ich will nur das der Dialog modal ist damit man nicht auf den Parent gehen kann und wieder sachen öffnen kann.
Es werden DatenbankLinks geprüft. dies erfolgt in einer for-schleife und jedesmal wenn diese durchlaufen wird wird das im Dialog/Frame angezeigt.
 

anti-held

Bekanntes Mitglied
Ich denke mal dass das Problem folgendes ist:
Der Main-Frame ist gerade blockiert, weil er wartet, bis der Dialog fertig ist.
Der Dialog jedoch muss warten, bis der Main-Frame nicht mehr blockiert ist, um seine Änderungen vorzunehmen.
Könnte das zutreffen?
 
C

Camino

Gast
Es werden DatenbankLinks geprüft. dies erfolgt in einer for-schleife und jedesmal wenn diese durchlaufen wird wird das im Dialog/Frame angezeigt.

Brauchst du dafür denn überhaupt den Dialog? Oder würde es auch gehen, wenn du die Anzeige im Frame machst? Evtl. musst du die Überprüfung in einen Thread/SwingWorker auslagern, damit die Anzeige nicht blockiert wird.
 
@Anti-Held
ja muss so sein
Mein Ziel ist es den MainFrame zu blockiern (damit keine weiteren Prozesse gestartet werden bis das Testen fertig ist) aber das trozdem der Compiler weitergeht um zu Testen
 

anti-held

Bekanntes Mitglied
Du musst deine Änderungen am Main-Frame herausnehmen und erst nachdem dein Dialog weg ist, anwenden.
Denn sonst bist du in der oben beschriebenen Dead-lock situation
 
C

Camino

Gast
Den Dialog brauch ich damit ich den MainFrame blockiere das man nicht während getsetet wird andere Prozesse starten kann.

Hmm, einen Dialog nur dafür zu nutzen, damit der MainFrame blockiert wird, finde ich etwas fragwürdig. Das Blocken des MainFrames kannst du doch bestimmt auch anders hinkriegen, also dass erst wieder andere Prozesse gestartet werden können, wenn der Test vorbei ist.
 

anti-held

Bekanntes Mitglied
Er will doch eine Fortschrittsanzeige darstellen.
Wenn diese nicht benötigt würde, könnte man einfach die möglichen buttons mit
Code:
Component.setEnabled(false)
nicht benutzbar machen.
 
werd schon ganzschön verwirrt ... Gottseidank ist Freitag
Also was sagt ihr? ist es besser den MAin-Frame per Dialog zu blockiern oder anders oder die möglichen Buttons auf enable zu setzen?
 

anti-held

Bekanntes Mitglied
Ich finde den ProgressDialog schon schön...(Meine Meinung)

Hab mich daran erinnert, dass du es warst dem ich Gestern in nem anderen Thread geholfen habe...
Hab mir den Code nochmal angesehen, und unter der Vorraussetzung dass es sich noch um das
selbe Projekt handelt,
versuche doch mal diese beiden Zeilen in deinem Code:
Java:
            dbLinkTree.setModel(m);
            progressFrame.setVisible(false);

durch diese auszutauschen:
Java:
           progressFrame.dispose();
           dbLinkTree.setModel(m);
 
allerdings :)
Habs versucht aber leider gleiche Situation wie zuvor
Java:
            if(fromFileChooser == true){
//                this.setEnabled(false);
                setProgressingDialog();
            }
             TreeNode root = null;
            root = buildDBLinkTree(rootPath, files);
            DefaultTreeModel m = new DefaultTreeModel(root);
            progressDialog.dispose();
            dbLinkTree.setModel(m);
//            progressDialog.setVisible(false);
//            this.setEnabled(true);
            dbLinkTree.setRootVisible(true);
        }
    }
hier die Methode
Code:
setProgressingDialog()
Java:
ublic void setProgressingDialog() {
        progressDialog = new JDialog(this, true);                //("NTSWincash DBLinkConnectionTester");
//        progressDialog.setTitle("NTSWincash DBLinkConnectionTester");
        ImageIcon img = new ImageIcon("D:/workspaces/HEAD/DBLinkTester/data_base_connection.png");
        progressDialog.setIconImage(img.getImage());
        progressDialog.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        progressDialog.setBounds(750, 500, 225, 125);

        JPanel progressPanel = new JPanel(new MigLayout());
        informationLabel = new JLabel("Testing ...");
        progressPanel.add(informationLabel, "wrap");

        progressBar = new JProgressBar();
        progressPanel.add(progressBar, "grow 100,wrap");

        cancelButton = new JButton("cancel");
        progressPanel.add(cancelButton,  "right");

        progressDialog.add(progressPanel);
        progressDialog.setVisible(true);
        }
sobald der Compiler zu
Code:
progressDialog.setVisible(true);
kommt wird der Dialog aufgerufen und der Main-Frame blovkiert und es geht nichts mehr
 

anti-held

Bekanntes Mitglied
poste doch bitte mal deine buildDBLinkTree - Methode...
Ich glaube dass darin das Problem steckt.
Es wird irgendetwas vom Main-Thread aufgerufen, auf das gewartet werden muss.
 
Java:
public TreeNode buildDBLinkTree(final String rootPath, final List<File> list) {


        DBLinkTester tester = new DBLinkTester();
        Map<String, DefaultMutableTreeNode> nodes = new HashMap<String, DefaultMutableTreeNode>();

        DefaultMutableTreeNode root = new DefaultMutableTreeNode();
        nodes.put(rootPath, root);
        progressBar.setString("0/" + list.size());
        progressBar.setStringPainted(true);
        progressBar.setMaximum(list.size());

        for(int i = 0; i < list.size(); i++) {
            informationLabel.setText("Testing " + i + " from " + list.size() + " DBLink-Files");
            progressBar.setString(i + "/" + list.size());
            progressBar.setValue(i);
            File file = list.get(i);
            String fileName = file.getName();

            Boolean workingDBLink = tester.testDBLinkConnection(file);
            DefaultMutableTreeNode fileNode = createNode(fileName, workingDBLink, file);
            if(workingDBLink == false){
                faildDBLinks.add(fileNode);
            }

            DefaultMutableTreeNode parentNode = getParentNode(nodes, file);
            parentNode.add(fileNode);
        }
        return root;
    }
liegts an den variablen oder doch an den Methoden
Code:
createNode
und
Code:
getParentNode
Ich blick heute echt nicht mehr durch
Achja is mal ein dickes Danke angebracht :toll:
 

anti-held

Bekanntes Mitglied
versuche mal das hier:

Java:
            if(fromFileChooser == true){
//                this.setEnabled(false);
                setProgressingDialog();
            }
             TreeNode root = null;
            root = buildDBLinkTree(rootPath, files);

wird ersetzt durch:

Java:
             final TreeNode root;
            new Thread(new Runnable(){
               public void run(){
                  root = buildDBLinkTree(rootPath, files);
               }
            }).start();
            if(fromFileChooser == true){
                setProgressingDialog();
            }

edit:
natürlich muss dann auch ganz unten in die Methode buildDBLinkTree
die Anweisung:
Code:
progressDialog.dispose();
 
Zuletzt bearbeitet:
Hm das is jetzt blöd weil sowohl progressBar und informationLabel in
Code:
setProgessDialog()
erstellt werden
auserdem wird voll lange getestet und dann erst der Dialog angezeigt
ps: wie soll das gehen wenn in
Code:
buildDBLink()
der fortschritt angezeigt wird auf der progressBar ...
 

anti-held

Bekanntes Mitglied
Das Problem ist, dass der Dialog erstellt wird und bei setVisible wird der Main-Frame solange blockieren, bis der Dialog
fertig ist.
Das passiert erst, wenn dispose darauf aufgerufen wird.
Das sollte aber der Main-Frame machen, welcher blockiert ist!
-> Deadlock

Also müssen die Frames für das GUI-Element und der Thread, der die berechnungen macht gleichzeitig laufen.
Die Progressbar musst du halt dann vorher schon mit 0 initialisieren.
 
puh echt zimlich blöd dass hätte ich beachten sollen bevor ich zum coden angefangen habe
Naja ich werd das glaub ich mal auf nächste Woche verschieben
Aber danke nochmal für deine Mühe :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E JDialog mit count down timer AWT, Swing, JavaFX & SWT 1
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
A ViewController (IFrame) > Jdialog > Model AWT, Swing, JavaFX & SWT 1
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
L Swing JDialog ton beim klicken ausstellen AWT, Swing, JavaFX & SWT 1
L JDialog hat manchmal keinen Inhalt AWT, Swing, JavaFX & SWT 2
Drachenbauer Hauptfenster erhält schmale Streifen rechts unt unten, wenn ich einen JDialog hinzufüge. AWT, Swing, JavaFX & SWT 19
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
B Eingaben im JDialog abwarten AWT, Swing, JavaFX & SWT 4
S Swing JDialog mit KeyEvent als Rückgabe AWT, Swing, JavaFX & SWT 1
O Swing JDialog öffnen und dann warten bis er geschlossen wurde AWT, Swing, JavaFX & SWT 2
stylegangsta JDialog bestimmte Zeilen kursiv AWT, Swing, JavaFX & SWT 20
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
Bluedaishi JDialog modal und JTextArea AWT, Swing, JavaFX & SWT 4
L KeyListener für JDialog AWT, Swing, JavaFX & SWT 7
T Event Handling JDialog schließen, sobald ein neuer erzeugt wird AWT, Swing, JavaFX & SWT 3
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16
D Button auf geöffnetem JDialog AWT, Swing, JavaFX & SWT 5
N Definitionen JDialog AWT, Swing, JavaFX & SWT 7
L JDialog - Event wenn Parent größe ändert AWT, Swing, JavaFX & SWT 2
Joew0815 JDialog repaint() funktioniert nicht wie gewünscht. AWT, Swing, JavaFX & SWT 2
D Swing Schließen von JDialog soll auch JFrame schließen. AWT, Swing, JavaFX & SWT 4
N Swing Fragen zu non-modal JDialog AWT, Swing, JavaFX & SWT 1
F Swing JDialog schließen - WindowListener bekommt dispose nicht mit AWT, Swing, JavaFX & SWT 0
N JDialog als Progress-Anzeige AWT, Swing, JavaFX & SWT 6
I focus an ein jdialog geben AWT, Swing, JavaFX & SWT 3
3 JDialog über einem Vollbildfenster anzeigen AWT, Swing, JavaFX & SWT 5
M JDialog soll JFrame "blockieren" AWT, Swing, JavaFX & SWT 2
K JDialog zeigt Components nicht an AWT, Swing, JavaFX & SWT 3
S Jframe aus JDialog starten AWT, Swing, JavaFX & SWT 4
M JDialog übergibt eingaben nicht an aufrufende klasse AWT, Swing, JavaFX & SWT 15
S Assistent im JDialog AWT, Swing, JavaFX & SWT 7
H Swing JDialog cannot be resolved as a typ AWT, Swing, JavaFX & SWT 12
C Swing JDialog "flutet" den Arbeitsspeicher AWT, Swing, JavaFX & SWT 9
S Swing Eigenen JDialog mit Rückgabewert AWT, Swing, JavaFX & SWT 3
C Swing JDialog Ladebildschirm wird nicht angezeit AWT, Swing, JavaFX & SWT 5
Jagson Mit JMenu auf jDialog zurück? Wie? AWT, Swing, JavaFX & SWT 8
A JDialog (modal) blockiert alle Fenster! AWT, Swing, JavaFX & SWT 2
Jagson Swing Von JDialog zu anderem JDialog wechseln AWT, Swing, JavaFX & SWT 2
S JDialog direkt über dem MainFrame aufpoppen lassen AWT, Swing, JavaFX & SWT 2
A Swing JDialog KeyBindings und Textfelder AWT, Swing, JavaFX & SWT 5
D Daten von JDialog an JTable in JFrame übergeben AWT, Swing, JavaFX & SWT 7
D JDialog: immer nur einer gleichzeitig AWT, Swing, JavaFX & SWT 4
S JDialog per Button schließen AWT, Swing, JavaFX & SWT 2
B Swing JDialog modal, aber trotzdem Frame auswählbar AWT, Swing, JavaFX & SWT 2
D JDialog alwaysOnTop, aber nur innerhalb der Applikation AWT, Swing, JavaFX & SWT 3
J Swing JDialog blokiert mehrere JFrames - soll aber nur den aufrufenden blockieren AWT, Swing, JavaFX & SWT 4
S JDialog über Applet AWT, Swing, JavaFX & SWT 3
N Swing Klasse erbt von JDialog - Problem mit innerer ActionListener-Klasse AWT, Swing, JavaFX & SWT 6
J Swing JDialog gleichzeitig mit JFrame anzeigen AWT, Swing, JavaFX & SWT 8
S Probleme jDialog einfügen AWT, Swing, JavaFX & SWT 4
qwerqer Swing JDialog Darstellungsprobleme - Dialog lässt sich nicht schließen AWT, Swing, JavaFX & SWT 3
S Schrift ändern in JDialog AWT, Swing, JavaFX & SWT 3
S Problem mit JDialog AWT, Swing, JavaFX & SWT 3
D Elternfenster vom JDialog aktualisieren oder nicht ? AWT, Swing, JavaFX & SWT 7
hdi Swing Genaue Funktionsweise von modalem JDialog? AWT, Swing, JavaFX & SWT 11
U JDialog ohne Taskleiste AWT, Swing, JavaFX & SWT 7
S Programm pausieren während JDialog offen ist AWT, Swing, JavaFX & SWT 2
X JEditorPane Größe in JDialog automatisch anpassen AWT, Swing, JavaFX & SWT 2
Ollek JDialog Koponenten neu anordnen AWT, Swing, JavaFX & SWT 3
A JDialog AWT, Swing, JavaFX & SWT 10
Dit_ SwingUtilities.invokeLater und Modaler JDialog AWT, Swing, JavaFX & SWT 11
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A JDialog ausdrucken AWT, Swing, JavaFX & SWT 7
aze JDialog mit runden ecken AWT, Swing, JavaFX & SWT 8
Dit_ JDialog nur horizontal vergrößern AWT, Swing, JavaFX & SWT 3
C Swing JProgressBar in JDialog wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
M Swing Vererbung, Probleme mit JDialog AWT, Swing, JavaFX & SWT 12
H JDialog, Modal - Klassenübergreifend => Problem AWT, Swing, JavaFX & SWT 5
S Swing Bild (Gif) in Bitte warten JDialog AWT, Swing, JavaFX & SWT 6
U JFrame minimiert nach JDialog, JOptionPane AWT, Swing, JavaFX & SWT 3
K Swing JDialog aus Frame ausrufen AWT, Swing, JavaFX & SWT 2
B JDialog über JFileChooser anzeigen AWT, Swing, JavaFX & SWT 6
B JDialog AWT, Swing, JavaFX & SWT 6
J Swing Probmel mit JDialog (Modal/FocusLost/Button) AWT, Swing, JavaFX & SWT 5
E Swing Fehlerhaftes Verhalten bei gleichzeitigen Verwendnen von PopUpMenu und JDialog?! AWT, Swing, JavaFX & SWT 5
J Swing JDialog mit static-Funktion anzeigen -> Rückgabewert AWT, Swing, JavaFX & SWT 3
E Daten von JDialog nach JFrame übertragen AWT, Swing, JavaFX & SWT 4
F ActionListener von JButton funktioniert mit JFrame aber nicht mit JDialog AWT, Swing, JavaFX & SWT 2
D Mehrere Comboboxen in JDialog AWT, Swing, JavaFX & SWT 2
F JDialog per Button schliessen - klappt nicht AWT, Swing, JavaFX & SWT 4
BattleMaster246 JDialog erscheint in der Taskbar AWT, Swing, JavaFX & SWT 7
H Sub-Dialog von modalem JDialog aus aufrufen - geht das? AWT, Swing, JavaFX & SWT 6
R Swing JDialog liefert immer false, 2 JListen verknüpfen AWT, Swing, JavaFX & SWT 3
P Swing eigenen Modalen JDialog AWT, Swing, JavaFX & SWT 6
J JDialog verliert Werte AWT, Swing, JavaFX & SWT 3
N Variablen an JDialog übergeben AWT, Swing, JavaFX & SWT 2
P Swing JDialog schliesst nicht AWT, Swing, JavaFX & SWT 2
X Swing JDialog von JInternalFrames überlappen lassen AWT, Swing, JavaFX & SWT 2
O JDialog-JScrollPane-JTable Problem AWT, Swing, JavaFX & SWT 3
N Swing Frage zu modalem JDialog. AWT, Swing, JavaFX & SWT 16
A JFrame oder JDialog AWT, Swing, JavaFX & SWT 12
B Swing JDialog : Herausfinden wie dieser beendet wurde? AWT, Swing, JavaFX & SWT 2
T JDialog ohne Fenstermanager? AWT, Swing, JavaFX & SWT 2
S JDialog in der Taskbar anzeigen AWT, Swing, JavaFX & SWT 3
A Swing JFrame Werte aus JDialog übergeben AWT, Swing, JavaFX & SWT 4
K Swing JDialog ohne Titlebar mit Rahmen AWT, Swing, JavaFX & SWT 5
KrokoDiehl Swing KeyEvents für JDialog / JFrame AWT, Swing, JavaFX & SWT 2
C Swing JComboBox in JDialog AWT, Swing, JavaFX & SWT 3
F Frage zu Dialogen mit JDialog -Erstellung des Konstruktors AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben