我必须编写一个Java 8 Swing应用程序,并且该应用程序的一部分会生成一个输出文件(Excel电子表格)。因此,在用户界面的某个时刻,用户将必须:
我对这里的体面UX解决方案以及它如何映射到Swing控件及其布局感兴趣。
我知道我可以使用JFileChooser
选择目录或特定文件,但我从未用过它选择目录和输入new的名称(不存在在文件系统上)文件名+扩展名。
关于我可以在这里提供什么功能,优雅,简单/易于使用和理解的解决方案的任何想法?
[您可以使用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()
希望这会起作用;)