zoukankan      html  css  js  c++  java
  • JavaFX FileChooser文件选择器,缓存上一次打开的目录

    例1:点击按钮Choose File打开文件选择器,并打开指定的目录。这是通过final void setInitialDirectory(final File value)方法实现的。

     1 import java.io.File;
     2 
     3 import javafx.application.Application;
     4 import javafx.event.ActionEvent;
     5 import javafx.event.EventHandler;
     6 import javafx.geometry.Insets;
     7 import javafx.geometry.Pos;
     8 import javafx.scene.Scene;
     9 import javafx.scene.control.Button;
    10 import javafx.scene.layout.GridPane;
    11 import javafx.stage.FileChooser;
    12 import javafx.stage.FileChooser.ExtensionFilter;
    13 import javafx.stage.Stage;
    14 
    15 public class Main extends Application {
    16 
    17     public static void main(String[] args) {
    18         launch(args);
    19     }
    20     
    21     @Override
    22     public void start(Stage primaryStage) throws Exception {
    23         // Create a pane to hold a button
    24         GridPane pane = new GridPane();
    25         pane.setStyle("-fx-border-color: green;");
    26         pane.setAlignment(Pos.CENTER);
    27         pane.setPadding(new Insets(10, 10, 10, 10));
    28         pane.setHgap(10);
    29         pane.setVgap(10);
    30         
    31         // Create a button to choose a file
    32         Button btChooseFile = new Button("Choose File");
    33         pane.add(btChooseFile, 0, 0);
    34                 
    35         // Set the primary stage properties
    36         primaryStage.setScene(new Scene(pane, 400, 200));
    37         primaryStage.setTitle("Starting...");
    38         primaryStage.setResizable(false);
    39         primaryStage.show();
    40         
    41         // 
    42         btChooseFile.setOnAction(new EventHandler<ActionEvent>() {
    43             @Override
    44             public void handle(ActionEvent event) {
    45                 FileChooser fileChooser = new FileChooser();
    46                 fileChooser.setTitle("Choose File");
    47                 fileChooser.setInitialDirectory(new File("J:" + File.separator + "PrtSc" + File.separator + "20190321"));
    48                 fileChooser.getExtensionFilters().addAll(new ExtensionFilter("Text Files", "*.txt"), new ExtensionFilter("All Files", "*.*"));
    49                 File file = fileChooser.showOpenDialog(primaryStage);
    50                 if (file != null) {
    51                     System.out.println(file.getAbsolutePath());
    52                 }
    53             }
    54         });
    55     }
    56 }

    UI:

    例2:增加一个缓存文件,用于记录上一次选中的目录。

    工程结构:

    第62行的代码,涉及到的知识点:Java - byte[] 和 String互相转换

     1 import java.io.File;
     2 import java.io.FileInputStream;
     3 import java.io.FileNotFoundException;
     4 import java.io.FileOutputStream;
     5 import java.io.IOException;
     6 import java.io.InputStream;
     7 import java.io.OutputStream;
     8 
     9 import javafx.application.Application;
    10 import javafx.event.ActionEvent;
    11 import javafx.event.EventHandler;
    12 import javafx.geometry.Insets;
    13 import javafx.geometry.Pos;
    14 import javafx.scene.Scene;
    15 import javafx.scene.control.Button;
    16 import javafx.scene.layout.GridPane;
    17 import javafx.stage.FileChooser;
    18 import javafx.stage.FileChooser.ExtensionFilter;
    19 import javafx.stage.Stage;
    20 
    21 public class Main extends Application {
    22 
    23     public static void main(String[] args) {
    24         launch(args);
    25     }
    26     
    27     @Override
    28     public void start(Stage primaryStage) throws Exception {
    29         // Create a pane to hold a button
    30         GridPane pane = new GridPane();
    31         pane.setStyle("-fx-border-color: green;");
    32         pane.setAlignment(Pos.CENTER);
    33         pane.setPadding(new Insets(10, 10, 10, 10));
    34         pane.setHgap(10);
    35         pane.setVgap(10);
    36         
    37         // Create a button to choose a file
    38         Button btChooseFile = new Button("Choose File");
    39         pane.add(btChooseFile, 0, 0);
    40                 
    41         // Set the primary stage properties
    42         primaryStage.setScene(new Scene(pane, 400, 200));
    43         primaryStage.setTitle("Starting...");
    44         primaryStage.setResizable(false);
    45         primaryStage.show();
    46         
    47         // 
    48         btChooseFile.setOnAction(new EventHandler<ActionEvent>() {
    49             @Override
    50             public void handle(ActionEvent event) {
    51                 FileChooser fileChooser = new FileChooser();
    52                 fileChooser.setTitle("Choose File");
    53                 fileChooser.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*.*"));
    54                 //
    55                 File cacheFile = new File("cache.txt");
    56                 if (cacheFile.exists()) {
    57                     try (InputStream inputStream = new FileInputStream(cacheFile)) {
    58                         byte[] bytes = new byte[(int) cacheFile.length()];
    59                         // Read the contents of the cache.txt
    60                         inputStream.read(bytes);
    61                         //
    62                         File directory = new File(new String(bytes));
    63                         if (directory.exists()) {
    64                             fileChooser.setInitialDirectory(directory);
    65                         }
    66                     } catch (FileNotFoundException e) {
    67                         e.printStackTrace();
    68                     } catch (IOException e1) {
    69                         e1.printStackTrace();
    70                     }
    71                 }
    72                 //
    73                 File file = fileChooser.showOpenDialog(primaryStage);
    74                 if (file != null) {
    75                     // Store the directory to the cache.txt
    76                     try (OutputStream outputStream = new FileOutputStream(cacheFile)) {
    77                         byte[] bytes = file.getParent().getBytes();
    78                         outputStream.write(bytes);
    79                     } catch (FileNotFoundException e) {
    80                         e.printStackTrace();
    81                     } catch (IOException e) {
    82                         e.printStackTrace();
    83                     }
    84                 }
    85             }
    86         });
    87     }
    88 }
  • 相关阅读:
    基础练习 高精度加法
    基础练习 阶乘计算
    基础练习 闰年判断
    基础练习 01字串
    基础练习 字母图形
    基础练习 数列特征
    基础练习 杨辉三角形
    基础练习 特殊的数字
    基础练习 回文数
    Codeforces 417A Elimination
  • 原文地址:https://www.cnblogs.com/Satu/p/10847649.html
Copyright © 2011-2022 走看看