JavaFX FileChooser 初始目录
JavaFX FileChooser initial directory
在 Swing 中,JFileChooser 指向用户的默认目录,通常是 Windows 中的 "My Documents" 文件夹。默认情况下,JavaFX FileChooser 没有相同的行为。有一个 setInitialDirectory
方法应该没问题,但是在我们打开 FileChooser 的应用程序中有很多地方。不幸的是,FileChooser class 是最终的,所以我不能简单地扩展 class 并只调用 setInitialDirectory
一次。除了浏览整个应用程序并添加 setInitialDirectory
调用之外,我还能做些什么吗?
有一个显而易见的解决方案,就是在某处创建一个静态实用方法:
public class MyUtilities {
public static FileChooser createFileChooser() {
FileChooser chooser = new FileChooser();
chooser.setInitialDirectory(new File(System.getProperty("user.home"));
return chooser ;
}
}
那你就可以了
FileChooser chooser = MyUtilities.createFileChooser();
随时需要。
实际上,从用户体验的角度来看,我更喜欢对整个应用程序(或至少对大型应用程序的每个功能部分)使用单个 FileChooser
实例。这样它维护了用户访问的最后一个目录,恕我直言,这更方便。
在 Swing 中,JFileChooser 指向用户的默认目录,通常是 Windows 中的 "My Documents" 文件夹。默认情况下,JavaFX FileChooser 没有相同的行为。有一个 setInitialDirectory
方法应该没问题,但是在我们打开 FileChooser 的应用程序中有很多地方。不幸的是,FileChooser class 是最终的,所以我不能简单地扩展 class 并只调用 setInitialDirectory
一次。除了浏览整个应用程序并添加 setInitialDirectory
调用之外,我还能做些什么吗?
有一个显而易见的解决方案,就是在某处创建一个静态实用方法:
public class MyUtilities {
public static FileChooser createFileChooser() {
FileChooser chooser = new FileChooser();
chooser.setInitialDirectory(new File(System.getProperty("user.home"));
return chooser ;
}
}
那你就可以了
FileChooser chooser = MyUtilities.createFileChooser();
随时需要。
实际上,从用户体验的角度来看,我更喜欢对整个应用程序(或至少对大型应用程序的每个功能部分)使用单个 FileChooser
实例。这样它维护了用户访问的最后一个目录,恕我直言,这更方便。