JFileChooser und das erste Mal

Status
Nicht offen für weitere Antworten.

Stefan1200

Top Contributor
...nein, nicht das was Ihr denkt :)

Ist es normal, wenn ein JFileChooser das erste Mal nach dem Programmstart aufgerufen wird, das es sehr lange dauert, bis das Fenster zu sehen ist? Gibt es da ein Trick für, oder bleibt einem nur warten, bzw. das nutzen von FileDialog?

Ohne vorher ein Hinweistext auszugeben, das es mitunter 30-40 Sekunden dauern kann, denken doch viele Leute das Java Programm sei gecrashed :(
 

mariopetr

Bekanntes Mitglied
hallo,

ja, ist normal. zum einen muss die klasse erst geladen werden, zum anderen sucht er ganz schoen auf dem filesystem rum. als alternative kannst du ja beim start deines programms einen filechooser in einem thread instanziieren, aber nicht anzeigen
 

marsias

Aktives Mitglied
Hi!

Also das das laden soooo lange dauert? das kann natürlich an deinen rechner liegen..
bei mir geht es ruck zuck... 1,4 Ghz...aber stimmt das er rumsucht...
versuch ihm mal ein startverzeichniss zu übergeben vielleicht geht es besser?

mfg
 

jptc.org

Bekanntes Mitglied
Generell braucht der JFileChooser immer beim Startup extrem länger als bei den folgenden Aufrufen. Die Ladegeschwindigkeit hängt von vielen Faktoren ab (Hardware - nicht nur Prozessor, Betriebssystem usw.). Die Verwendung eines initialen Pfades bringt keine Performancepluspunkte. Am besten ist, wenn man den JFileChooser beim Startup läd. Schau doch mal den Post beim Java Performance Portal an:

http://www.jptc.org/modules.php?name=Forums&file=viewtopic&t=10

Für weitere Fragen stehe ich gerne zur Verfügung.

Karsten Voigt

http://www.java-performance-portal.org
 

Nobody

Top Contributor
grad ist mir ne idee gekommen: starte in einem extra thread eine msg box die den user auf das laden hinweist.
 

jptc.org

Bekanntes Mitglied
Nobody hat gesagt.:
grad ist mir ne idee gekommen: starte in einem extra thread eine msg box die den user auf das laden hinweist.

Das ganze könnte sogar funktionieren, wenn es da nicht ein Problem gebe: Swing ist nicht thread safe. Auf alle Komponente sollte nur vom (Main) Eventdispatcher Thread zugegriffen werden. Es sollten niemals neue Dialoge oder ähnliches in einem separtem Thread gestartet werden. Eine ähnliche Problematik wird im Post

http://www.java-forum.net/viewtopic.php?t=166

dargestellt. Ausserdem werden viele Nutzer an einer Anwendung zweifeln, die darauf hinweist dass die Anzeige eines Filedialoges etwas länger dauern kann (zumindest denke ich das). :roll:

Karsten Voigt
http://www.java-performance-portal.org
 

DTR

Bekanntes Mitglied
Da es sich ja hier nur um eine kleine Meldung handelt dürfte es nicht all zuviel ausmachen, das Swing nicht threadsave ist. Man kann durchaus Swingelemente in verschiedenen Threads verwenden, wenn man weiß was man macht.

Ich denke es ist schon sinnvoll eine Nachricht zu bringen, daß das Programm am laden des FileChoosers ist. Denn ein Programm, das sich anscheinend aufgehängt hat ist meiner ansicht nach noch abschrekender. Es hängt allso immer davon ab, wie lange die zu erwartende Pause ist.
 

Stefan1200

Top Contributor
Bisher habe ich das immer so gemacht, das ich in der Titelzeile ein hinweistext bringe, das man warten möchte.

Bzw. bei manchen Programmen habe ich halt den AWT FileDialog eingebaut. Der kommt sofort.
 

jptc.org

Bekanntes Mitglied
Schon um einen sauber Code zu erhalten sollte man AWT und Swing nicht mischen. Auf die restlichen Nachteile möchte ich hier nicht eingehen. Das mit dem Hinweistext in der Titelzeile kann durchaus gemacht werden, besonders wenn man bedenkt, dass das Problem nur beim ersten Aufruf auftritt.

Karsten Voigt
http://www.java-performance-portal.org
 

Stefan1200

Top Contributor
jptc.org hat gesagt.:
Schon um einen sauber Code zu erhalten sollte man AWT und Swing nicht mischen. Auf die restlichen Nachteile möchte ich hier nicht eingehen. Das mit dem Hinweistext in der Titelzeile kann durchaus gemacht werden, besonders wenn man bedenkt, dass das Problem nur beim ersten Aufruf auftritt.

Naja, was heisst mischen. Ich habe eine extra Klasse geschrieben, in dem ich dann Titeltext und FileDialog Typ (LOAD, SAVE) übergebe, und den Pfad zurück bekomme. In dieser Klasse habe ich dann auch nur AWT, und in der Programmklasse nur reines Swing.

Also gemischt habe ich das nicht, das ist komplett voneinander getrennt.
Das geht doch noch in Ordnung, oder nicht?
 

jptc.org

Bekanntes Mitglied
Also normalweise sollte eine GUI nur aus Swing oder nur aus AWT bestehen, ist dies nicht zu vermeiden, so sollte man ein paar kleine Regeln beachten (ich bin jetzt zu faul das zu übersetzen :lol: )

1. Do not mix lightweight (Swing) and heavyweight (AWT) components in a container if the lightweight component must be displayed on top of the heavyweight (AWT legt sich immer über Swing, egal was man macht)
2. If a popup menu intersects a heavyweight component, force the popup menu to be heavyweight.
3. Don't add heavyweight components to an instance of JScrollPane (denn es wird nicht funktionieren)
4. Don't add heavyweight components to Swing internal frames.

Im Falle des FileChooser funktioniert das schon, jedoch ist es kein guter Stil und was ist wenn man sich überlegt AWT einzufrieren und gar nicht mehr mit auszuliefern? Prinzipiell sollte man die Vermischung von AWT mit Swing nur im Ausnahmefall als Übergangslösung verwenden.

Karsten Voigt
http://www.java-performance-portal.org
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S JFileChooser Problem Allgemeine Java-Themen 4
G JFileChooser Fokus entfernen?! Allgemeine Java-Themen 15
S JFileChooser und iText Allgemeine Java-Themen 6
Todesbote JFileChooser im Vordergrund (*.jar wird mittels shell_exec in PHP aufgerufen) Allgemeine Java-Themen 1
J Swing Cursor.WAIT funktioniert nicht nach JFileChooser Allgemeine Java-Themen 1
F Input/Output Arbeiten mit dem JFileChooser Allgemeine Java-Themen 4
H JFileChooser soll NUR Windows-Netzwerkumgebung anzeigen Allgemeine Java-Themen 2
G Spaltenbreite im JFileChooser Allgemeine Java-Themen 8
K JFileChooser aussehen Allgemeine Java-Themen 6
V Swing JFileChooser blockiert nicht den EDT? Allgemeine Java-Themen 3
W Swing Dringende Hilfe: JFileChooser Ändern Allgemeine Java-Themen 4
W Objekte speichern mit JFileChooser Allgemeine Java-Themen 8
Balbes Dateipfad in den JFileChooser aus Textdatei einlesen Allgemeine Java-Themen 7
C Applet: JFileChooser: PFad an HTML zürückgeben Allgemeine Java-Themen 4
MQue JFileChooser zu lange sichtbar Allgemeine Java-Themen 4
V [Lösung]Hohe Systemauslastung bei JFileChooser auf WindowsXP Allgemeine Java-Themen 5
R JFileChooser Allgemeine Java-Themen 3
V JFilechooser, mehrere Datein selektieren und Reihenfolge? Allgemeine Java-Themen 2
M JFileChooser schließt sich nicht Allgemeine Java-Themen 2
M JFileChooser: Ordner anlegen Allgemeine Java-Themen 3
C File-Filter in JFileChooser Allgemeine Java-Themen 4
M JFileChooser wird rechts oben mit x beendet - wie reagieren? Allgemeine Java-Themen 2
MQue JFileChooser Allgemeine Java-Themen 3
G JFileChooser öffnet sich nicht im Browser ( trotz Signatur ) Allgemeine Java-Themen 10
G JFileChooser Sprache? Allgemeine Java-Themen 5
D JFileChooser Dateiname == Unterverzeichnis Allgemeine Java-Themen 3
K JFileChooser --> FileFilter --> FilenameFilter problem Allgemeine Java-Themen 5
T Erste Schritte mit javax.validation Allgemeine Java-Themen 5
J String nur erste Zeichen vergleichen Allgemeine Java-Themen 6
M RS232 nur erste Übertragung korrekt Allgemeine Java-Themen 7
FoolMoon Datei zeilenweise einlesen, aber nicht die erste Zeile! Allgemeine Java-Themen 3
neurox Tutorial: Hibernate mit MySQL (erste Schritte) Allgemeine Java-Themen 34
T Erste Schritte in JNI Allgemeine Java-Themen 17
byte Erste Zeile einer Textdatei entfernen Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben