# SWING: Modales Fenster - Hauptfenster aktualisieren



## Reinhard (24. Jul 2006)

Hallo,

ich habe ein Problem mit einer Swing-Anwendung. Das Programm sieht aus wie im Link:
Screenshot (Beispiel)

Ich mache einen Doppelklick auf eine Zeile in der JTable und öffne einen Edit-Dialog wie folgt: 


```
EditFahrzeugteilDialog ft = new EditFahrzeugteilDialog(MainForm);
        ft.setVisible(true);
        AppFunctions.refreshTable(MainForm);
```

Mein Problem sieht man jetzt im Link. Nach dem setVisible wird refreshTable ausgeführt. Diese Funktion dauert ein paar Sekunden (kommt auf die Anzahl der Datensätze an).

Besteht die Möglichkeit vorher einen Repaint im Hauptformular auszuführen, damit diese hässliche graue Fenster verschwindet?

Danke,
Reinhard


----------



## L-ectron-X (24. Jul 2006)

Dein Posting lässt keine schlüssige Analyse zu. Man könnte vermuten, dass du AWT und Swing-Komponenten gemischt hast.


----------



## Reinhard (24. Jul 2006)

AWT und Swing ist nicht bewusst gemischt. Die Forms wurden mit JFormDesigner erstellt.

Beim dem Hauptdialog handelt es sich um einen JFrame und bei dem Edit-Dialog um einen JDialog.

Kann ich irgendwie per Code ein neuzeichnen eines Fensters aufrufen?

Mehr fällt mir im Moment nicht dazu ein. Ich weiß das es etwas wenig für eine Analyse ist


----------



## Wildcard (24. Jul 2006)

Es gibt ein paintImmediatly, die Frage ist aber ob das wirklich helfen wird  :?


----------



## Lim_Dul (24. Jul 2006)

Wenn dein refreshTable länger braucht, solltest du dafür einen eigenen Thread starten.
Du wirst das vermutlich im AWT_Thread ausführen, was dazu führt, dass in der zeit nichts an der Gui neu gezeichnet wird.


----------



## AlArenal (24. Jul 2006)

Lass mich raten ( <= meine neue Standard-Eingangs-Floskel), du arbeitest kein Stück bewusst mit Multithreading, d.h. die ganze Anwendung läuft im Event Dispatcher Thread?


----------



## Reinhard (24. Jul 2006)

@Wildcard:
Ich werde es mal probieren. Danke für den Tip.

@Lim_Dul + Al_Arenal:
Ja die Software läuft nur in einem Thread. Wo gibt es denn genaue Informationen, wie man eine Swing-Anwendung "richtig" mit mehreren Threads aufbaut? Habt ihr dafür einen guten Link parat?

Danke,
Reinhard


----------



## AlArenal (24. Jul 2006)

http://today.java.net/pub/a/today/2003/10/24/swing.html
http://www.javalobby.org/eps/galbraith-swing-2/
...


----------



## Reinhard (24. Jul 2006)

Danke für die Links. Ich werds mir gleich mal anschauen.


----------



## Reinhard (25. Jul 2006)

Mit dem SwingWorker funktioniert es jetzt einwandfrei.
Danke.


----------



## Reinhard (25. Jul 2006)

Ich habe gerade noch einmal unter Java 1.4 getestet. Leider funktioniert hier der SwingWorker nicht
Ich bekomme beim Start eine Exception "UnsupportedClassVersionError".

Besteht irgendeine Möglichkeit den SwingWorker 1.6 unter JRE 1.4 laufen zu lassen?

Danke,
Reinhard


----------



## AlArenal (25. Jul 2006)

Nein, den gibts ja nur als Backport für 1.5. Aber es gibt noch das Original:

http://java.sun.com/products/jfc/tsc/articles/threads/src/SwingWorker.java


----------

