使用JFileChooser允许Swing用户指定输出位置

问题描述 投票:0回答:1

我必须编写一个Java 8 Swing应用程序,并且该应用程序的一部分会生成一个输出文件(Excel电子表格)。因此,在用户界面的某个时刻,用户将必须:

  1. 选择其文件系统上要写入Excel文件的目录;然后
  2. 输入Excel文件的名称(如果它们在文件名中指定“ .xls”或“ .xlsx”,则应用将在相应的XLS / XLSX输出中输出/写入文件;如果它们省略文件扩展名,默认为XLSX)

我对这里的体面UX解决方案以及它如何映射到Swing控件及其布局感兴趣。

我知道我可以使用JFileChooser选择目录或特定文件,但我从未用过它选择目录输入new的名称(不存在在文件系统上)文件名+扩展名。

关于我可以在这里提供什么功能,优雅,简单/易于使用和理解的解决方案的任何想法?

java swing java-8 filesystems jfilechooser
1个回答
0
投票

[您可以使用Apache的FileNameUtils,或使用substring和indexOf通过String操作实现您自己的扩展名提取。我将为您提供第一种情况的示例。

按照建议使用默认的JFileChooser之后,您可以检查指定的文件名,因为JFileChooser将返回File对象(如果未选择任何内容,则返回null,因此首先检查null值:]]

JFileChooser fileChooser = new JFileChooser();
File selectedFile = fileChooser.getSelectedFile();

if (selectedFile!=null) {

    String givenExtension = FilenameUtils.getExtension(selectedFile.getName());

    boolean noExtension = "".equals(givenExtension);
    boolean xlsx = givenExtension.toLowerCase().contains("xlsx");
    boolean xls = givenExtension.toLowerCase().contains("xls");

    String newFileName = selectedFile.getName();

    if(noExtension) {
        newFileName += ".xlsx";
    } else if (!xlsx && !xls) {
        throw new Exception("Invalid name");
    }
}

如果您不希望接受其他情况,请删除toLowerCase()

希望这会起作用;)

© www.soinside.com 2019 - 2024. All rights reserved.