Java — FileDialog Вопросы/помощь

Я уверен, что это очень нубские вопросы... Но мне никогда раньше не приходилось иметь дело с FileDialog, и я не могу заставить свою кодировку работать.

Это мой слушатель для моего JButton, который, как я знаю, входит, потому что появляется FileDialog:

public static class FileListener implements ActionListener{
    public void actionPerformed(ActionEvent e) {
        FileDialog fd = new FileDialog(new Frame(), "Pick Folder");
        String dir = "C:/";
        fd.setDirectory(dir);
        fd.setAlwaysOnTop(true);
        fd.setMode(FileDialog.LOAD);
        fd.setVisible(true);
        String pickedFileDir = fd.getFile();
        File folder = new File(pickedFileDir);
        File[] listOfFiles = folder.listFiles();
        numOfFiles = listOfFiles.length;
    }
}

Проблема в том, что я хочу, чтобы он мог загрузить ПАПКУ. Мне нужно получить каталог из него. И даже когда я нажимаю на 1 файл и нажимаю «Открыть», количество файлов не меняется. Я знаю это из-за этого кода:

JLabel number = new JLabel("Files found: " + numOfFiles);

Метка не меняется после открытия файла. Он должен перейти от «0» к «1».

Очень ценю, если вы можете помочь мне понять это (очевидно, «Лучший ответ» там для вас :))


person Brandon    schedule 03.12.2011    source источник
comment
Взгляните на JFileChooser — это облегчит вам жизнь. Вы найдете руководство здесь.   -  person Paul    schedule 04.12.2011


Ответы (1)


Вместо этого вы должны использовать JFileChooser. Вот ваш пример:

JFileChooser jfc = new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
jfc.setCurrentDirectory(new File("C:/"));
if (jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
    File selectedFile = jfc.getSelectedFile();
    File[] listOfFiles = selectedFile.listFiles();
}
person Stas Jaro    schedule 03.12.2011
comment
Ух ты. Так проще выглядит. Спасибо (в последний раз я что-то делал с Files около 2 лет назад... Тогда я даже не слышал о JFileChooser) Это работает. НО количество вещей не меняется. Нужно ли как-то обновлять JLabel? - person Brandon; 04.12.2011
comment
-1, Пол дал ссылку на учебник Swing, в котором показано, как использовать JFileChooser, за 20 минут до того, как это было опубликовано. Поэтому на этот вопрос был дан ответ в комментарии, и повторный ответ не требовался. Ссылка на учебник предпочтительнее, потому что она а) отвечает на вопрос б) дает автору доступ к другой ссылке, которая может быть полезна в будущем. - person camickr; 04.12.2011
comment
В последний раз я что-то делал с Files около 2 лет назад... Тогда я даже не слышал о JFileChooser Вам нужно вылезти из-под того камня, на котором вы жили. JFileChooser является частью Swing с момента его создания. Swing был введен в J2SE в Java 1.2 который вышел в 1998 году! Если вы работали с файлами в 2009 году, у вас остается «всего» 11 лет, чтобы чудеса Swing (не смогли) просочиться к вам. - person Andrew Thompson; 04.12.2011
comment
Ух ты. Должно быть, я жил под скалой. Кстати, я никогда особо не работал с файлами. - person Brandon; 04.12.2011