File Dialog beschleunigen (Swing -> JFileDialog)
-
Hi
Gibt es mittlerweile irgendeine Möglichkeit die Darstellung des JFileDialog() zu beschleunigen ? 2,6 Celeron mit 128ATI und 730 Ram brauch fast 3 Sekunden (beim ersten mal, danach gehts ein wenig schneller) und das ist definitiv zu viel. hab schon final gesetzt, bringt aber nich wirklich was. hoffe einer kennt irgeneine Lösung zur beschleunigung. achja, falls von intresse: java 1.4.2. besten dank.
pain
-
Zeig mal Code. Nutzt du einen FileFilter? Wenn ja: Zeig auch dazu den Code.
-
im grunde verwende ich den JFileChooser() so wie in der java doc beschrieben:
JFileChooser chooser = new JFileChooser(); // Note: source for ExampleFileFilter can be found in FileChooserDemo, // under the demo/jfc directory in the Java 2 SDK, Standard Edition. ExampleFileFilter filter = new ExampleFileFilter(); filter.addExtension("jpg"); filter.addExtension("gif"); filter.setDescription("JPG & GIF Images"); chooser.setFileFilter(filter); int returnVal = chooser.showOpenDialog(parent); if(returnVal == JFileChooser.APPROVE_OPTION) { System.out.println("You chose to open this file: " + chooser.getSelectedFile().getName()); }
und FileFilter nehm ich auch wie in der javaDoc:
import java.io.File; import javax.swing.*; import javax.swing.filechooser.*; /* ImageFilter.java is a 1.4 example used by FileChooserDemo2.java. */ public class ImageFilter extends FileFilter { //Accept all directories and all gif, jpg, tiff, or png files. public boolean accept(File f) { if (f.isDirectory()) { return true; } String extension = Utils.getExtension(f); if (extension != null) { if (extension.equals(Utils.tiff) || extension.equals(Utils.tif) || extension.equals(Utils.gif) || extension.equals(Utils.jpeg) || extension.equals(Utils.jpg) || extension.equals(Utils.png)) { return true; } else { return false; } } return false; } //The description of this filter public String getDescription() { return "Just Images"; } }
ich vermute das das mit der instanzierung nich so toll ist. hab schon überlegt ob ich die instanz zum programmstart anlege und dann nur abrufe (also ne art template). allerdings gefällt mir die idee nicht wirklich :-(, da nich sehr sauber. schau mal ob was mit anfangen kannst. ansonsten nachfragen.thx.
pain
-
Das ist doch nicht dein Code, oder? Zumindest paßt der nicht zusammen. Zeig mal den echten Code.
-
du glaubst mir nicht wenn ich dir sage das du damit nicht viel anfange können wirst, oder ? mein code entspricht dem reingestellten code (von der Art und weise). und so wie er dort steht braucht er bei der erstinitialisierung ca 3 Sekunden. wenn du unbedingt meinen code haben möchtest meld dich nochmal, wird dann aber kompliziert da FileChooser() bei mir ne art Objekt ist was von einer klasse verwaltet wird, klassisch objektorientiert also mit get/set FileChooser() (daran liegt das aber nicht mit der geschwindigkeit). So denn bis gleich
pain
-
dämliches login hier jedesmal, warum merkt sich das der browser nicht ?
der zweite code muss natürlich (auf den ersten gemünzt):
public class ExampleFileFilter extends FileFilter....
so aussehen.dann passt das auch zusammen
-
Gehen wir mal anders an die Sache heran:
Starte das Programm mal mit "java -Xprof Programm" und guck dann mal auf der Konsole, wo genau so viel Zeit beim Öffnen des JFileChoosers gebraucht wird.
-
guter vorschlag
ähm, geht aber leider nich. die java applikation wird aus einer 3D Engine heraus gestartet. ich werd dann wohl mal ein stand alone prog basteln und da mal das mit -Xprof test. meine vermutung liegt dahingehend das java sich ja an den standart os FileDialog anlehnen will. um swing objekte erzeugen dauert an sich schon recht lange, und wenn dann noch das mit dem spezifischen os dialog zukommt, passt das schon mit dem langsam.ich schau mal mit dem -Xprof, aber jede wette die zeit geht genau bei:
JFileChooser chooser = new JFileChooser();
drauf. alternative wäre dann halt nur im konstruktior vielleicht schon initialisieren. das wird bei mir aber schwierig da ich den FileChosser mit nen spezifischen Pfad(also in nem bestimmten directory) starte, und man das nich so ganz nachträglich ändern kann wenn man nur nen String hat. jut, ich schau erstmal und meld mich dann noch mal.danke
pain
//**************+
jo, ich hatte recht. das initialisieren dauert so ewig. wenn ich das im kontruktor mache hab ich dann nen FileDialog mit Win Geschwindigkeit. jetz muss ich nur noch rausfinden wie ich den startpfad des FileChoosers setzen kann wenn ich den nur als String habe. ich durchsuch grad die javaDoc
pain