2013-06-25 1 views
0

Я нахожусь в середине создания небольшой программы. Я немного нуб, когда дело доходит до программирования, и я только начинаю играть с разработчиком GUI NetBeans, чтобы помочь другу с его кодом. До сих пор происходит следующее:Нужна помощь с помощью JFileChooser для импорта всей папки в JList в NetBeans

  1. JFrame всплывает с редактируемым текстовым полем, кнопкой, JList и пустой панелью.
  2. Пользователь нажимает кнопку, и он предлагает им выбрать каталог.
  3. Как только пользователь выберет каталог, программа загрузит все файлы из этой папки (в конце концов я установлю его только для разрешения .jpg).
  4. Затем программа отобразит каталог в текстовом поле и поместит имена этих файлов в JList.

    ПРОБЛЕМА: У меня проблемы с 4. Я пытаюсь навсегда заставить эту вещь бежать. Я получил его, чтобы отобразить каталог правильно. Но я не могу заставить JList загружать имена файлов из массива файлов. Вот какой код, если кто-то может помочь. ПРИМЕЧАНИЕ: Я уже объявлял DefaulListModel с именем listModel вне этого события действия кнопок. Код не генерирует никаких ошибок, но JList остается пустым после нажатия на загрузку. текстовое поле -> Каталог кнопка -> jButton1 выбора файла -> к строковый массив имен файлов -> FileNames файл массив -> selectedFiles JList -> FileList

    Спасибо заранее! :)

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    JFileChooser fc = new JFileChooser(); 
    fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
    fc.showOpenDialog(null); 
    File[] selectedFiles = fc.getSelectedFiles(); 
    directory.setText(fc.getSelectedFile().getAbsolutePath()); //this displays the path of the selected folder in the text field 
    
    selectedFiles = fc.getSelectedFiles();   
    //this loop puts the files in the fileList... at least it should 
    for(int i = 0; i < selectedFiles.length; i++){ 
        listModel.addElement(selectedFiles[i]); 
          } 
    
    
    } 
    

ответ

2

Ваш JFileChooser установлен только позволит выбрать каталоги. Я предполагаю, что

selectedFiles = fc.getSelectedFiles(); 

возвращает пустой массив, что объясняет, почему вы ничего не видите в своем списке.

Вы, вероятно, хотите, чтобы заменить его

File directory = fc.getSelectedFile(); 
if (directory != null && directory.isDirectory()){ 
    File[] subFiles = directory.listFiles(); 
    for (int i = 0; i < subFiles.length; i++){ 
    listModel.addElement(subFiles[i]); 
    } 
} 
+0

Вау спасибо! Я бы никогда не подумал об этом сам. Поэтому, если я не ошибаюсь, проблема заключалась в том, что я пытался загрузить файл, но папка была выбрана единственной, в результате чего она возвращала значение null? – GregoryNeal

+0

Он возвращает пустой массив, когда ваш выбор файла находится в одном режиме выбора в соответствии с javadoc. Но просто используйте отладчик и проверьте возвращаемое значение – Robin

Смежные вопросы