2016-01-15 5 views
0

Я пытаюсь прочитать все имя файла из определенной папки и попытаться создать несколько флажков в JFrame с тем же именем. Итак, если в папке 5 файлов, приложение должно показать 5 флажков в кадре.Проблема с созданием нескольких флажков на лету

Вот мой код.

JFrame frame = new JFrame(); 
    File folder = new File("C://Tests"); 
    File[] listOfFiles = folder.listFiles(); 

     for (int i = 0; i < listOfFiles.length; i++) { 
      if (listOfFiles[i].isFile()) { 
      System.out.println("File " + listOfFiles[i].getName()); 
      } else if (listOfFiles[i].isDirectory()) { 
      System.out.println("Directory " + listOfFiles[i].getName()); 
      } 
      JCheckBox checkbox[i] = new JCheckBox(listOfFiles[i].getName()); 

     } 

Но я получаю ошибку "Несоответствие типов: невозможно преобразовать из JCheckBox в JCheckBox []". Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно?

Цените любую помощь. Благодаря

ответ

3

Определение и инициализацию массива первый ...

JCheckBox checkbox[] = new JCheckBox[listOfFiles.length]; 

Затем заливаем ...

for (int i = 0; i < listOfFiles.length; i++) { 
    if (listOfFiles[i].isFile()) { 
     System.out.println("File " + listOfFiles[i].getName()); 
    } else if (listOfFiles[i].isDirectory()) { 
     System.out.println("Directory " + listOfFiles[i].getName()); 
    } 
    checkbox[i] = new JCheckBox(listOfFiles[i].getName()); 
} 

Если вы хотите, чтобы иметь возможность получить доступ к массиву позже на вашей программе, вы необходимо будет сделать массив полем экземпляра ...

public class ... { 
    //... 
    private JCheckBox checkbox[]; 

Затем инициализируйте его, когда вы знаете, сколько у вас файлов ...

File[] listOfFiles = folder.listFiles(); 
checkbox[] = new JCheckBox[listOfFiles.length]; 

Честно говоря, более простым решением было бы использовать какой-то List, как ArrayList. См. Collections Trail для получения более подробной информации.

+0

Спасибо. Это помогло :) – Naseem

3

Попробуйте что-нибудь в этом роде.

  1. Объявление массива вне цикла; что-то вроде-> JCheckBox checkbox [] = new JCheckBox [listOfFiles.length]

  2. Внутри цикла сохраните экземпляр флажка в массиве -> флажок [j] = новый JCheckBox (listOfFiles [i] .getName());

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