Guten Abend,
Der Ablauf ist wie folgt:
ich schließe mein (einziges) JFrame und die windowClosing() Methode meines daran hängenden WindowAdapters wird vom EDT aufgerufen.
Ich starte darin einen neuen Thread, der folgende Dinge in dieser Reihenfolge tut:
- momentanes JFrame disposen()
- einen undecorated JDialog auf setVisible(true) setzen
- den JDialog als Observer bei einer Schreib-Klasse anmelden
- eine Methode dieser Schreib-Klasse aufrufen, die in ein File schreibt
Während des Schreibvorgangs wird regelmässig ein notify an alle Observer gesendet.
Demnach wird in meinem JDialog die Methode update() aufgerufen.
Das funktioniert auch und der ausführende Thread dieser update-Methode ist der selbe,
der erstellt wurde in der windowClosing, bzw. der den Schreibvorgang macht.
Innerhalb der update Methode steht nun ein repaint().
Und genau hier mag der EDT nicht, d.h. er betritt die repaint() Methode des JDialogs
nicht. Eig. müsste der EDT doch nix zu tun haben? Er hat ja nur schnell nen Thread gestartet, und auch das Ausblenden des einen, und Einblenden des anderen Fensters sollte ja schon lang erledigt sein (ist es ja auch, das sieht man).
D.h. der JDialog wird angezeigt, aber repaintet sich nicht.
Folgende Dinge habe ich bisher ohne Erfolg probiert:
- JDialog nicht undecorated machen (naja ich dachte mir wer weiss...)
- Das ursprüngliche JFrame nicht schließen
- Den Aufruf des repaints() innerhalb der update Methode auf den EDT zu legen mittels SwingUtilities/EventQueue
- das jframe.dispose() und jdialog.setVisible(true) auf den EDT zu legen
Noch jmd eine Idee? Für mich ist das nur ein weiteres Kapitel im Buch "Mysterien des EDT". Mensch ich will das endlich mal kapieren
Danke!!
Der Ablauf ist wie folgt:
ich schließe mein (einziges) JFrame und die windowClosing() Methode meines daran hängenden WindowAdapters wird vom EDT aufgerufen.
Ich starte darin einen neuen Thread, der folgende Dinge in dieser Reihenfolge tut:
- momentanes JFrame disposen()
- einen undecorated JDialog auf setVisible(true) setzen
- den JDialog als Observer bei einer Schreib-Klasse anmelden
- eine Methode dieser Schreib-Klasse aufrufen, die in ein File schreibt
Während des Schreibvorgangs wird regelmässig ein notify an alle Observer gesendet.
Demnach wird in meinem JDialog die Methode update() aufgerufen.
Das funktioniert auch und der ausführende Thread dieser update-Methode ist der selbe,
der erstellt wurde in der windowClosing, bzw. der den Schreibvorgang macht.
Innerhalb der update Methode steht nun ein repaint().
Und genau hier mag der EDT nicht, d.h. er betritt die repaint() Methode des JDialogs
nicht. Eig. müsste der EDT doch nix zu tun haben? Er hat ja nur schnell nen Thread gestartet, und auch das Ausblenden des einen, und Einblenden des anderen Fensters sollte ja schon lang erledigt sein (ist es ja auch, das sieht man).
D.h. der JDialog wird angezeigt, aber repaintet sich nicht.
Folgende Dinge habe ich bisher ohne Erfolg probiert:
- JDialog nicht undecorated machen (naja ich dachte mir wer weiss...)
- Das ursprüngliche JFrame nicht schließen
- Den Aufruf des repaints() innerhalb der update Methode auf den EDT zu legen mittels SwingUtilities/EventQueue
- das jframe.dispose() und jdialog.setVisible(true) auf den EDT zu legen
Noch jmd eine Idee? Für mich ist das nur ein weiteres Kapitel im Buch "Mysterien des EDT". Mensch ich will das endlich mal kapieren
Danke!!