Фильтр Java Swing JFileChooser не работает для sqlite

#java #sqlite #swing #jfilechooser

Вопрос:

Я скопировал и изменил пример отсюда. Я изменил его на sqlite. Я смотрю на каталог с файлами .app, .jar и .sqlite. Файлы .jar выделены серым цветом, но файлы .sqlite и .app можно выбрать. Почему фильтр не делает файлы .app недоступными для выбора? Я только хочу, чтобы .sqlite можно было выбрать. Я запускаю это на Mac OS X.

 package org.todivefor.filechooser4;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.filechooser.FileSystemView;

public class FileChooser4 {

    public static void main(String[] args) {

        JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
        jfc.setDialogTitle("Select DB");
        jfc.setAcceptAllFileFilterUsed(false);
        FileNameExtensionFilter filter = new FileNameExtensionFilter("SQLite DB", "sqlite");
        jfc.addChoosableFileFilter(filter);

        int returnValue = jfc.showOpenDialog(null);
        if (returnValue == JFileChooser.APPROVE_OPTION) {
            System.out.println(jfc.getSelectedFile().getPath());
        }
    }
}
 

Редактировать:

Во-первых, я не думаю, что понимал, как это должно было сработать. Я думал, что, указав фильтр с помощью sqlite, я ничего не увижу без расширения .sqlite. В ходе тестирования я обнаружил, что могу видеть файлы всех расширений, но могу выбрать только те, которые имеют .sqlite. Я попробовал свой код выше как на Mac OS X, так и на Windows и увидел разные результаты. В Windows я видел файлы .app и .sqlite, но мог выбрать только файлы .sqlite. В Mac OS X я видел файлы .app и .sqlite и мог выбрать любой из них. Я не уверен, почему это так, но это как-то связано с внешним видом и ощущениями. Как в Windows, так и на Mac я не указываю внешний вид, поэтому, думаю, я получаю значение по умолчанию. В Windows файлы .app отображаются в виде папок. В то время как на Mac они отображаются в виде файлов (до сих пор не знаю, почему их можно выбрать). Приложение, в котором я использую это, я управляю Lamp;F, и оно работает так, как я ожидаю, за исключением Mac OS X Lamp;F, где я могу выбрать файл с расширением .app.

Ответ №1:

Я нахожусь в Windows, и код, который вы опубликовали, кажется, работает. Это может быть ошибка с Java. Ваша Java в актуальном состоянии?

введите описание изображения здесь

Комментарии:

1. Я опубликовал это в качестве ответа, потому что комментарии не могут содержать изображений.

2. Моя java обновлена. Можете ли вы выбрать один из файлов .jar?

3. Вы можете загрузить изображение на какой-либо веб-сайт и добавить ссылку на него в своем комментарии. Это один из способов опубликовать комментарий, содержащий изображение.

4. @PeterReam Я не могу, потому что они не появляются. Фильтр работает правильно с моей стороны.

5. «Я опубликовал это как [ответ], потому что комментарии не могут содержать изображений». Нет, но они могут ссылаться на них. Я регулярно захожу в раздел «добавить изображение», как будто собираюсь дать ответ, только для того, чтобы скопировать/вставить ссылку на изображение в комментарий (затем отказаться от ответа).