JavaFX FileChooser ExtensionFilter не работает должным образом — выделенные файлы

Я пытаюсь использовать фильтр расширения в средстве выбора файлов javafx, чтобы ограничить выбор пользователя pdf и tiff. Этот аспект работает просто отлично, но когда я открываю средство выбора файлов, используется первый добавленный фильтр расширения, и эти файлы выделяются. Это тоже хорошо, но когда я выбираю другой фильтр, выделенные файлы не меняются. Если я нахожусь в фильтре PDF, выберите файл PDF, а затем измените фильтры, этот файл станет отключенным, но никакие другие. Я предполагаю, что это внутренняя проблема с javafx, но я решил проверить, не было ли у кого-нибудь еще этой проблемы. Я также использую osx, не уверен, что это повлияет на это. вот код, который я использую для выбора файла:

    try
                    {
                        FileChooser fileChooser = new FileChooser();
                        fileChooser.setTitle("select a file");

                        fileChooser.getExtensionFilters().addAll(
                                new FileChooser.ExtensionFilter("All Files", "*.jpeg", "*.pdf", "*.tiff"),
                                new FileChooser.ExtensionFilter("JPEG (*.JPEG, *.jpeg)", "*.jpeg", "*.JPEG"),
                                new FileChooser.ExtensionFilter("PDF (*.PDF, *.pdf)", "*.pdf","*.PDF"),
                                new FileChooser.ExtensionFilter("TIF (*.tif, *.tiff)", "*.tif", "*.tiff"));

                        File file = fileChooser.showOpenDialog(workbench.getStage());

Я использовал фильтр, содержащий большинство моих типов файлов, чтобы все файлы были выделены в начале. Спасибо за любую помощь заранее.


person SteveManC    schedule 07.08.2014    source источник


Ответы (1)


Я пробовал, и ваш код работал здесь, вы можете попробовать FileChooserBuilder(), но я считаю, что это может не сработать в вашем случае, если это так, обновите свой вопрос с помощью MCVE и я обновлю свой ответ.

Будьте осторожны с Unix GNU/Linux, так как имена файлов там чувствительны к регистру, это также может иметь огромное влияние, если вы не справитесь с этим должным образом.

FileChooserBuilder fcb = FileChooserBuilder.create();
FileChooser fc = fcb.title("Open Dialog").build();

//Set extension filter
FileChooser.ExtensionFilter extFilterALL = 
        new FileChooser.ExtensionFilter("All Files", "*.jpeg", "*.jpg", "*.pdf",
                "*.tiff", "*.tif","*.JPG","*.JPEG", "*.PDF", "*.TIFF", "*.TIF");
FileChooser.ExtensionFilter extFilterJPG = 
        new FileChooser.ExtensionFilter("JPG files (*.jpg)", "*.JPG", "*.jpg",
                                        "*.JPEG", "*.jpeg");
FileChooser.ExtensionFilter extFilterPDF = 
        new FileChooser.ExtensionFilter("PDF files (*.pdf)", "*.PDF", "*.pdf");
FileChooser.ExtensionFilter extFilterTIFF =
        new FileChooser.ExtensionFilter("TIFF files (*.tiff)", "*.TIF", "*.TIFF",
                                        "*.tif", "*.tiff");

fc.getExtensionFilters().addAll(extFilterALL,extFilterJPG, extFilterPDF, extFilterTIFF);

File selectedFile = fc.showOpenDialog(new Stage());
person Mansueli    schedule 07.08.2014
comment
FileChooserBuilder @устарело - person zIronManBox; 25.09.2015