1

我在 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 的文件。它显示了一些,但我无法完全弄清楚它为什么这样做。

4

1 回答 1

4

Ubuntu 和类 Unix 系统区分大小写。所以它正在过滤“*.JPG”,也许你有带有大写或小写扩展名的文件。因此,对于具有小写扩展名的文件,该文件将不匹配。

在windows中没有问题,因为它不区分大小写,我的意思是,one.jpg和one.JPG是一样的。

所以要修复它,在 ExtensionFilter 的构造函数中添加小写的扩展。

FileChooser.ExtensionFilter extFilterJPG = new FileChooser.ExtensionFilter("JPG files (*.jpg)", "*.JPG", "*.jpg");

希望能帮助到你

于 2013-08-05T14:13:16.357 回答