2015-12-10 3 views
0

Я использую графический интерфейс для создания слайд-шоу, и у меня есть папка с изображениями (все изображения .jpg), и я хочу, чтобы иметь возможность читать все их в список массивов и отображать случайные снимки. Я только что создал собственный исполняемый файл jar, чтобы мой друг мог запустить программу на своем компьютере, поэтому ей не нужно иметь дело с каким-либо кодом. Сейчас я делаю это с помощью массива и для цикла, чтобы прочитать в каждой картинке и название картины представляет собой число от 0 до размера массива,Чтение изображений в ArrayList без знания имени изображения

for(int i = 0; i < pic.length-1; i++) 
    { 
     pic[i] = new ImageIcon(this.getClass().getResource("/Pictures/"   
    + i +".JPG")); 
    } 

Используя этот метод, я должен измените код, изменив размер массива, затем добавьте новое изображение в папку и убедитесь, что изображение правильное. Я хочу, чтобы мой друг мог добавить картинку в складку, которую использует файл jar, и который будет просто использовать новое изображение для слайд-шоу, но я не уверен, как читать на картинке из папки с зная имя картины. Я также хочу добавить изображения в ArrayList, поэтому размер ArrayList будет определяться количеством изображений в папке.

+3

Вы просмотрели http://stackoverflow.com/questions/1844688/read-all-files-in-a-folder – Bug

+0

Я действительно смотрел на него, но я не совсем понял его. С первым ответом, когда они System.out.println (fileEntry.getName()); это имя файлов внутри папок? – theAnon

+0

Обратите внимание, что у вас закончится нехватка памяти (в какой-то момент), если вы просто прочитали все изображения в папке и добавили их в список. Для слайд-шоу, вероятно, лучше загружать только несколько изображений вперед, чтобы вы могли делать плавные переходы и т. Д., Но не теряли память. – haraldK

ответ

1

Я изменил код немного от Read all files in a folder

Files.walk(Paths.get("C:/Users/example/pictures/")).forEach(filePath -> { 
     if (Files.isRegularFile(filePath)) { 
      System.out.println("File name: " + filePath.getFileName()); 
     } 
    }); 

Вот как вы получите имена файлов, вы можете сделать их изображения, imageicons, или хранить их в ArrayList.

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