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 файл и натисна "Отвори", numOfFiles не се променя. Знам това поради този код:

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
Еха. Трябва да съм живял под камък. Между другото никога не съм работил широко с Files. - person Brandon; 04.12.2011