2015-08-31 4 views
0

Dans Swing, JFileChooser désignait le répertoire par défaut de l'utilisateur, qui est généralement le dossier «Mes documents» dans Windows. Le JavaFX FileChooser n'a pas le même comportement par défaut. Il existe une méthode setInitialDirectory qui devrait convenir, mais il y a un certain nombre d'endroits dans l'application que nous ouvrons FileChoosers. Malheureusement, la classe FileChooser est finale, donc je ne peux pas simplement étendre la classe et appeler le setInitialDirectory une seule fois. Y a-t-il autre chose que je pourrais faire en plus de parcourir toute l'application et d'ajouter les appels setInitialDirectory?JavaFX FileChooser répertoire initial

+0

Qu'y a-t-il de mal à appeler 'setInitialDirectory' où il doit être appelé? – Reimeus

+0

Il suffit de boucler environ 40 classes et appelez-le. Espérait un meilleur moyen. – Tommo

Répondre

3

Il y a la solution évidente, créer simplement une méthode statique utilitaire quelque part:

public class MyUtilities { 

    public static FileChooser createFileChooser() { 
     FileChooser chooser = new FileChooser(); 
     chooser.setInitialDirectory(new File(System.getProperty("user.home")); 
     return chooser ; 
    } 
} 

Ensuite, vous pouvez faire tout

FileChooser chooser = MyUtilities.createFileChooser(); 

chaque fois que vous en avez besoin. En fait, je préfère, d'un point de vue de l'expérience utilisateur, utiliser une seule instance FileChooser pour l'ensemble de l'application (ou au moins pour chaque partie fonctionnelle d'une grande application). De cette façon, il maintient le dernier répertoire que l'utilisateur a visité, ce qui est plus pratique imho.

+1

Si vous décidez d'utiliser un 'FileChooser 'global, vous pouvez effacer le' ExtensionFilters' si nécessaire avec 'chooser.getExtensionFilters(). Clear()' –