2013-08-03 2 views
1

Я создал небольшое приложение в javafx, в котором нужно выбрать JPG, PNG или GIF-образ для работы. Вот код я использую для фильтрации файлов:JavaFX ExtensionFilter не работает должным образом в ubuntu

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

Ubuntu и unix подобные системы чувствительны к регистру. Поэтому он фильтруется для «* .JPG», и, возможно, у вас есть файлы с расширением верхнего или нижнего регистра. Таким образом, файл не будет соответствовать в случае файлов с расширением нижнего регистра.

В окнах нет проблем, потому что это не чувствительно к регистру, я имею в виду, one.jpg это то же самое, что one.JPG.

Чтобы исправить это, добавьте расширение в нижнем регистре в конструкторе ExtensionFilter.

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

Надеется, что это помогает

+0

спасибо ... Он работал отлично .. –