# JFrame als Thread



## Sanin (30. Apr 2008)

Hallo!
Ich habe folgendes vor:

mein Hauptprogramm arbeitet mit images(jpg).
Ich will die Images mit HIlfe von Swing anzeigen lassen,
so dass jedes Image ein eigenes Fenster bekommt.

Wenn ich eine Instanz von JFrame in einer Methode anzeige,
terminiert mein Hauptprogram wenn ich das Fenster mit dem
Image schieße(mit  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE).

Also habe ich eine Klasse geschrieben, die die Klasse Thread erweitert und
die ich zum Anzeigen benutze.

Das Problem: wenn ich versuche das erste Image anzuzeigen, wird das
entsprechende Fenster nicht sichtbar. Erst beim zweiten versuch(z.B. mit einem anderen Bild)
werden die BEIDEN Fenster sichtbar.

Woran soll es liegen?
Bin dankbar für jeden Tipp.

Grüße,
Sanin


----------



## Wildcard (30. Apr 2008)

Wenn du nicht willst das dein Programm beim Beenden des Frames terminiert, warum dann EXIT_ON_CLOSE?


----------



## Sanin (30. Apr 2008)

Nun, ich will nur, dass das Fenster, das das Bild anzeigt, geschlossen wird und
der damit verbundene Thread.

Ich will aber weiter mit dem Hauptprogram arbeiten wollen.

Wenn ich HIDE_ON_EXIT wähle, wird das Fenster nicht sichtbar , aber der Thread läuft
noch im hintergrund.

Das ist aber nicht das Problem, sonder dass das erste Fenster nicht gelich sichtbar wird,
sobder erst wenn noch ein Fenster erstellt wird.

Danach geht es gut und korrekt.

Sieht nach einem Buffer Effekt aus.


----------



## Wildcard (30. Apr 2008)

Keine einziges mir bekanntes grafisches Toolkit (darunter auch Swing) ist threadsicher.
Du kannst und darfst verschiedene Frames nicht in threads laufen lassen.


----------



## Sanin (30. Apr 2008)

Das Problem ist auch:

ich kann natürlich die Schlißungsmethode aud HIDE_ON_EXIT setzen.

Aber da ich mein Hauptprogramm nicht mit System.exit(0) terminiere,
werden die nicht sichtbare instanzen von Frames noch im Hindegrund lebendig sein
und das ganze Programm nicht schißen lassen bzw. VM nicht terminieren lassen.

Wie kann man das lösen?


----------



## Wildcard (30. Apr 2008)

Wann willst du dein Programm denn schließen?


----------



## Sanin (30. Apr 2008)

Also ich will es so habe:

Program X läuft als Haupprogram.

A startet JFrames, die Bilder anzeigen und danach geschlossen werden können ohne
Auswirkung auf A zu haben.

Nach einiger Zeit will ich das Hauptprogramm X schlißen.

Dabei können einige von JFrames noch offen sein. Sie müssen dann mit dem 
Hauptprogramm geschlossen werden.

Alles möglichst ohne System.exit(0) da dieser Aufruf bei mir Probleme verursachen könnte.


----------



## Wildcard (30. Apr 2008)

> Nach einiger Zeit will ich das Hauptprogramm X schlißen.


Also öffnet X einen eigenen Frame? Dann setz diesen einen auf EXIT_ON_CLOSE..


----------

