我在javafx中创建了一个小应用程序,其中必须选择JPG,PNG或GIF图像。这是用于过滤文件的代码:
FileChooserBuilder fcb = FileChooserBuilder.create();
FileChooser fc = fcb.title("Open Dialog").initialDirectory(new File(currentDir)).build();
//Set extension filter
FileChooser.ExtensionFilter extFilterJPG = new FileChooser.ExtensionFilter("JPG files (*.jpg)", "*.JPG");
FileChooser.ExtensionFilter extFilterPNG = new FileChooser.ExtensionFilter("PNG files (*.png)", "*.PNG");
FileChooser.ExtensionFilter extFilterGIF = new FileChooser.ExtensionFilter("GIF files (*.gif)", "*.GIF");
fc.getExtensionFilters().addAll(extFilterJPG, extFilterPNG, extFilterGIF);
selectedFile = fc.showOpenDialog(link);
此代码在Windows 7中运行良好。但在Ubuntu中使用它时,它不会显示所有带JPG,PNG或GIF的文件。它显示了一些,但我无法弄清楚它为什么这样做。
答案 0 :(得分:4)
Ubuntu和unix之类的系统区分大小写。所以它过滤了“* .JPG”,也许你有大写或小写扩展名的文件。因此,对于具有小写扩展名的文件,文件将不匹配。
在Windows中,没有问题,因为它不区分大小写,我的意思是,one.jpg与one.JPG相同。
所以要修复它,在ExtensionFilter的构造函数中添加小写的扩展名。
FileChooser.ExtensionFilter extFilterJPG = new FileChooser.ExtensionFilter("JPG files (*.jpg)", "*.JPG", "*.jpg");
希望有所帮助