2014-01-11 2 views
3

В моем проекте содержится папка с изображениями, содержащими изображения. Я хочу отображать изображения случайным образом на JLabel в кадре при нажатии кнопки. Я пробовал код ниже:Отображение случайных изображений из папки в JLabel в Netbeans

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{ 
    Image im=new ImageIcon(this.getClass().getResource("/images/a1.jpg")).getImage(); 
    ImageIcon iconLogo = new ImageIcon(im); 
    jLabel2.setIcon(iconLogo); 
} 

Этот код содержит только изображение a1. Но мне нужны изображения случайным образом (по одному изображению за раз).

+0

Проверьте ['ImageViewer'] (http://stackoverflow.com/a/13463684/418556) советы по отображению нескольких изображений. 1) Для лучшей помощи раньше, отправьте сообщение [MCVE] (http://stackoverflow.com/help/mcve). 2) Одним из способов получения изображения (-ов) для примера является горячая ссылка на изображения, видимые в [этом ответе] (http://stackoverflow.com/a/19209651/418556) (другой способ показан в разделе ' ImageViewer'). –

ответ

5

использовать что-то вроде

..getResource("/images/a" + randomNumber + ".jpg") 

Genderate случайного числа для randomNumber переменных. Пока все ваши изображения имеют один и тот же префикс и только другой цифровой суффикс, вы должны быть в порядке.


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

getResource("/images/" + pathArray[randomNumber]) 

Пример

String[] imageNames {"hello.jpg", "world.png", "!.gif"}; 
Random rand = rand = new Random(); 
.... 
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{ 
    int index = rand.nextInt(3); 

    Image im=new ImageIcon(this.getClass() 
       .getResource("/images/" + imageNames[index])).getImage(); 
    ImageIcon iconLogo = new ImageIcon(im); 
    jLabel2.setIcon(iconLogo); 
} 

UPDATE Комментарий к ОП

«О! Если папка содержит 100 снимков, кажется, очень difficult.My проект нуждается в большем количестве изображений»

затем загружать поданные имена в структуру данных через File API .. file.list() < - вернуть String[]

File file = new File("src/images"); 
String[] imageNames = file.list(); 
... 
int index = rand.nextInt(imagNames.length); 

пока все это файлы, а не каталоги, это должно работать нормально.


UPDATE

Как описано ниже в комментариях, его было отмечено, что выше ответ, вероятно, не работает во время развертывания. Вот @ предложение AndrewThompson в качестве исправления проблемы файла

Лучшего способом я могу думать:

  1. Создать небольшой вспомогательный класс, который создает список изображений.
  2. Напишите этот список File, по одному имени в строке.
  3. Включите файл в качестве ресурса (самое простое место, где находятся изображения).
  4. Используйте getResource(String), чтобы получить URL.
  5. Прочтите его обратно во время работы.
+0

Если папка содержит разные изображения, такие как png, jpg, jpeg? – spc

+0

Вы помещаете все имена файлов в массив String –

+0

Oh! Если папка содержит 100 изображений, это кажется очень сложным. Мой проект нуждается в большем количестве изображений. – spc

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

  • Нет связанных вопросов^_^