2018년 3월 12일 월요일

[JavaFX] FileChooser, DirectoryChooder Examples


1. File Open Dialog


FileDialog.java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
    public static String open(Stage stage, String lastOpenedDirName ) {
        FileChooser fileChooser = new FileChooser();
        fileChooser.setTitle("Open file");
        if( lastOpenedDirName != null ) {
            File f = new File(lastOpenedDirName);
            if( f.exists() ) {
                fileChooser.setInitialDirectory(new File(lastOpenedDirName));
            }
        }
        File file = fileChooser.showOpenDialog(stage);
        if( file != null ) {
            return file.getPath();
        }
        return null;
    }

Controller.java
1
2
3
4
5
6
7
    @FXML
    private void handleFileOpen(ActionEvent event) {
        String filename = FileDialog.open(stage,null);
        if( filename != null ) {
            MessageBox.alert(stage, "FileName", filename );
        }
    }

Result:



2. File Save Dialog

FileDialog.java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
    public static String save(Stage stage, String lastSavedFileName ) {
        FileChooser fileChooser = new FileChooser();
        fileChooser.setTitle("Save file");
        if( lastSavedFileName != null ) {
            File f = new File(lastSavedFileName);
            if( f.exists() ) {
                if( f.isDirectory() ) {
                    fileChooser.setInitialDirectory(new File(f.getParent()));
                }
            }
            fileChooser.setInitialFileName(lastSavedFileName);
        }
        File file = fileChooser.showOpenDialog(stage);
        if( file != null ) {
            return file.getPath();
        }
        return null;
    }   

Controller.java
1
2
3
4
5
6
7
    @FXML
    private void handleFileSave(ActionEvent event) {
        String filename = FileDialog.save(stage,"savefile.txt");
        if( filename != null ) {
            MessageBox.alert(stage, "FileName", filename );
        }
    }


3. Directory Open Dialog


FileDialog.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
    public static String openDir(Stage stage, String lastOpenedDirName ) {
        DirectoryChooser directoryChooser = new DirectoryChooser();
        directoryChooser.setTitle("Open Folder");
        if( lastOpenedDirName != null ) {
            File f = new File(lastOpenedDirName);
            if( f.exists() ) {
                directoryChooser.setInitialDirectory(new File(lastOpenedDirName));
            }
        }
        File file = directoryChooser.showDialog(stage);
        if( file != null ) {
            return file.getPath();
        }
        return null;
    }

Controller.java

1
2
3
4
5
6
7
    @FXML
    private void handleDirectoryOpen(ActionEvent event) {
       String dirname = FileDialog.openDir(stage,null);
        if( dirname != null ) {
            MessageBox.alert(stage, "FileName", dirname );
        }
    }

Result:


4. Multiple File Open Dialog


FileDialog.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    public static List<File> openFiles(Stage stage, String lastOpenedDirName ) {
        FileChooser fileChooser = new FileChooser();
        fileChooser.setTitle("Open files");
        if( lastOpenedDirName != null ) {
            File f = new File(lastOpenedDirName);
            if( f.exists() ) {
                fileChooser.setInitialDirectory(new File(lastOpenedDirName));
            }
        }
        return fileChooser.showOpenMultipleDialog(stage);
    }

Controller.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
    @FXML
    private void handleMultipleFileOpen(ActionEvent event) {
        List<File> files = FileDialog.openFiles(stage, null);
        if( files != null ) {
            StringBuilder sb = new StringBuilder();
            for( File f : files ) {
                sb.append(f.getPath());
                sb.append("\n");
            }
            MessageBox.alert(stage, "FileNames", sb.toString() );
        }
    }

Result:






댓글 없음:

댓글 쓰기