当前位置:   article > 正文

JavaFX的FileChooser获取文件和MenuBar_javafx打开文件目录

javafx打开文件目录

在使用桌面应用程序的时候我们都会发现上面有工具栏,那么JavaFX如何创建工具栏并且通过FileDialog获取文件呢?

在JavaFX中工具栏为MenuBar,这个是装载菜单的工具通过getMenus()方法可以向其加入不同的Menu,而Menu中每一项都是一个MenuItem

代码如下:

  1. public class Main extends Application {
  2. private Scene scene = null;
  3. private static final int WIDTH = 300;
  4. private static final int HEIGTH = 300;
  5. private final MenuBar menuBar = new MenuBar();
  6. private final Menu fileMenu = new Menu("文件");
  7. private final Menu editMenu = new Menu("编辑");
  8. private final Menu helpMenu = new Menu("帮助");
  9. private final MenuItem openFile = new MenuItem("打开文件");
  10. private final MenuItem exit = new MenuItem("关闭");
  11. private void initComponents() {
  12. scene = new Scene(new BorderPane(), WIDTH, HEIGTH);
  13. BorderPane root = (BorderPane) scene.getRoot();
  14. menuBar.getMenus().addAll(fileMenu, editMenu, helpMenu);
  15. fileMenu.getItems().addAll(openFile, exit);
  16. root.setTop(menuBar);
  17. }
  18. @Override
  19. public void start(Stage stage) throws Exception {
  20. initComponents();
  21. stage.setScene(scene);
  22. stage.show();
  23. }
  24. public static void main(String[] args) {
  25. launch(args);
  26. }
  27. }

效果就是这个样子滴:

那么我们就可以给MenuItem添加事件了

在里面添加一个方法,在类中添加一个成员变量用来接收文件,然后我们打开一个文件试试就知道了

  1. /* 记得要在start()中调用啊 */
  2. private void initEvent() {
  3. fileMenu.setOnAction(e -> {
  4. FileChooser fileChooser = new FileChooser();
  5. file = fileChooser.showOpenDialog(new Stage());
  6. System.out.println(file);
  7. });
  8. }

触发事件之后控制台输出了文件的路径

 没有任何问题

然后就可以对文件进行一些操作了

然后进阶一点,给FileChooser添加过滤器

  1. private void initEvent() {
  2. fileMenu.setOnAction(e -> {
  3. FileChooser fileChooser = new FileChooser();
  4. fileChooser.getExtensionFilters().addAll(
  5. new FileChooser.ExtensionFilter("XLS", "*.xls"),
  6. new FileChooser.ExtensionFilter("XLSX", "*.xlsx"),
  7. new FileChooser.ExtensionFilter("DOC", "*.doc"),
  8. new FileChooser.ExtensionFilter("DOCX", "*.docx")
  9. );
  10. file = fileChooser.showOpenDialog(new Stage());
  11. System.out.println(file);
  12. });
  13. }

 效果就是这个样子滴

 FileChooser还可以设置默认打开路径

  1. FileChooser fileChooser = new FileChooser();
  2. fileChooser.setInitialDirectory(new File("D:/test"));
  3. fileChooser.getExtensionFilters().addAll(
  4. new FileChooser.ExtensionFilter("XLS", "*.xls"),
  5. new FileChooser.ExtensionFilter("XLSX", "*.xlsx"),
  6. new FileChooser.ExtensionFilter("DOC", "*.doc"),
  7. new FileChooser.ExtensionFilter("DOCX", "*.docx")
  8. );
  9. file = fileChooser.showOpenDialog(new Stage());
  10. System.out.println(file);

至于如何实现每一次打开都是上一次点开的文件目录

可以自己写一个用于缓存的日志,每次触发事件后将本次文件目录写入文件中,然后再次触发事件的时候先读取文件的最后一次打开的目录,将fileChooser.setInitialDirectory()中设置为缓存文件最后一次读取到的目录就可以了

(兄弟姐妹们点点赞吧)

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号