Использование FileDialog для выбора файла определенного расширения

Я пытаюсь использовать средство выбора файлов FileDialog, потому что мне действительно нужно java-приложение, чтобы иметь собственное средство выбора файлов Apple (я знаю, что мы все ненавидим отсутствие переносимости, но это то, что мне нужно). Я пытаюсь сделать так, чтобы средство выбора файлов позволяло пользователю выбирать файлы, которые заканчиваются на .ws. Вот что я пробовал:

            FileDialog fd = new         

           FileDialog(_sharedInstance,rsc.str("480"),FileDialog.LOAD);
           // fd.setFile("*.ws");
            class WSFilter implements FilenameFilter {
                public boolean accept(File dir, String name) {
                    return (name.endsWith(".ws"));
                }
            };
            FilenameFilter wsFilter = new WSFilter();

            fd.setFilenameFilter(wsFilter);
            fd.setDirectory(_projectsBaseDir.getPath());
            fd.setLocation(50,50);

           // fd.setFile("*");
            fd.setVisible(true);

По какой-то причине мой выбор файлов не позволяет мне выбирать какие-либо файлы. Любые идеи?


person Mike2012    schedule 07.08.2009    source источник


Ответы (3)


Ответ: мне нужен этот вызов: System.setProperty("apple.awt.fileDialogForDirectories", "false");

person Mike2012    schedule 07.08.2009
comment
Есть ли какая-либо соответствующая документация, на которую вы можете сослаться? - person Michael Myers; 08.08.2009
comment
Не совсем. В следующем потоке кто-то объяснил мне, как вам нужно установить это глобальное свойство, чтобы позволить FileDialog принимать каталоги, я просто забыл установить его обратно. Это одна из многих причин, по которым люди будут советовать вам не использовать FileDialog. stackoverflow.com/questions/1224714/ - person Mike2012; 11.08.2009

Почему бы не использовать JFileChooser?

JFileChooser fileChooser = new JFileChooser(new File(filename));
fileChooser.addChoosableFileFilter(new MyFilter());

class MyFilter extends javax.swing.filechooser.FileFilter {
    public boolean accept(File file) {
        String filename = file.getName();
        return filename.endsWith(".java");
    }
    public String getDescription() {
        return "*.java";
    }
}
person OMG Ponies    schedule 07.08.2009
comment
Потому что мне нужно использовать собственный инструмент выбора файлов Mac, а JFileChooser не позволяет этого. - person Mike2012; 08.08.2009

Разве об этом раньше не спрашивали?

В любом случае, вы можете попробовать изменить L&F и продолжать использовать JFileChooser.

Я слышал, что это хорошо:

Внешний вид Quaqua

альтернативный текст

person OscarRyz    schedule 07.08.2009
comment
В настоящее время мы используем quaqua, но многие пользователи Mac считают, что это неадекватная интерпретация графического интерфейса Mac, поэтому мне было поручено реализовать средства выбора файлов, чтобы использовать собственное средство выбора файлов. - person Mike2012; 08.08.2009
comment
mmhh Я вижу, в зависимости от того, насколько это важно, вы можете либо реализовать свой собственный подкласс и добавить недостающие части (что, я думаю, будет довольно сложно), либо вы можете создать небольшое собственное приложение, которое возвращает путь к файлу при вызове. Это не должно быть слишком сложно сделать (если вы знаете Objective-C :P) T - person OscarRyz; 08.08.2009