如何将JFileChooser的所有选定文件绝对路径/名称设置为JTextField

时间:2017-05-29 12:43:21

标签: java swing jfilechooser

我有一个JButton的小应用程序打开JFileChooser来选择多个文件。因此,当我点击其approve button时,我应该能够将所有选定文件的绝对路径或名称设置为JTextField(在我的情况下,它是jTextField1)。

如果我只选择了1个文件,但我没有选择多个选择的文件

,我知道怎么做

我该怎么办?

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    JFileChooser copy = new JFileChooser();
    copy.setApproveButtonText("Copy");
    copy.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
    copy.setMultiSelectionEnabled(true);
    int copyDialog = copy.showOpenDialog(null);
    File[] files = copy.getSelectedFiles();
    if (copyDialog == JFileChooser.APPROVE_OPTION) {
        if(files.length>=2){
            jTextField1.setText(files.toString()); // I need to set jTextField1's text with all the selected file paths or names
        }else{
            jTextField1.setText(copy.getSelectedFile().getAbsolutePath().toString());
        }
    } else {

    }
} 

1 个答案:

答案 0 :(得分:2)

您可以使用流收集和加入文件:

Arrays.stream(files)
        .map(File::getAbsolutePath)
        .collect(Collectors.joining("\n"));

这会通过换行符加入路径。您可以根据需要更改分隔符。在这种情况下,您无需if(files.length>=2)

如果无法使用java 8,您可以创建一个创建完整字符串的方法:

private String getPaths(File[] files) {
    if (files == null || files.length == 0) {
        return "";
    }
    StringBuilder paths = new StringBuilder();
    paths.append(files[0].getAbsolutePath());
    for (int i = 1; i < files.length; i++) {
        paths.append('\n');
        paths.append(files[i].getAbsolutePath());
    }
    return paths.toString();
}