Получение переменной ImageIcon из пакета [duplicate]

Мне лично нравится простой:

function sleep(seconds){
    var waitUntil = new Date().getTime() + seconds*1000;
    while(new Date().getTime() < waitUntil) true;
}

then:

sleep(2); // Sleeps for 2 seconds

Я все время использую его для создания времени поддельной загрузки при создании скриптов в P5js

42
задан Barett 24 June 2015 в 17:11
поделиться

5 ответов

Чтобы создать ImageIcon из файла изображения в тех же банках, ваш код загружен:

new javax.swing.ImageIcon(getClass().getResource("myimage.jpeg"))

Class.getResource возвращает URL-адрес ресурса (или null!). ImageIcon имеет конструкторы, которые загружаются с URL-адреса.

Чтобы создать URL-адрес ресурса в банке не в вашем «пути к классам», см. документацию для java.net.JarURLConnection.

31
ответ дан Tom Hawtin - tackline 26 August 2018 в 01:41
поделиться

В netbeans 8.1 я сделал, чтобы включить папку значков и других изображений, называемых ресурсами внутри папки src в файле проекта. Поэтому всякий раз, когда я создаю Jar-файл, туда входит папка. Дерево файлов должно быть таким:

  • src (файлы Java в исходных пакетах здесь)
  • ** ПАКЕТ, ВЫ НАИМЕНЕНО В ПРОЕКТЕ ** file.java
  • Ресурсы image.jpg

Код должен выглядеть следующим образом:

jToggleButton1.setIcon(new javax.swing.ImageIcon(this.getClass().getResource("/resources/image.jpg")));
1
ответ дан Abdelsalam Shahlol 26 August 2018 в 01:41
поделиться

Это работает для загрузки и установки фонового изображения панели содержимого:

jar (или путь сборки) содержит:

 - com
 - img
 ---- bg.png

java содержит:

JFrame f = new JFrame("Testing load resource from jar");
try {
    BufferedImage bg = ImageIO.read(getClass().getResource("/img/bg.png"));
    f.setContentPane(new ImagePanel(bg));
} catch (IOException e) {
    e.printStackTrace();
}

Протестировано и работает как в jar, так и в unjarred (это технический термин).

BTW getClass().getClassLoader().getResourceAsStream("/img/bg.png") - который я пробовал в первую очередь, возвратил мне null InputStream.

8
ответ дан meagar 26 August 2018 в 01:41
поделиться

Вы можете попробовать что-то вроде:

InputStream stream = this.getClass().getClassLoader().getResourceAsStream("/images/image.jpg");

В вашем JAR-файле у вас может быть структура каталогов:

MyJAR.jar-com (файлы классов здесь) - images ---- image.jpg

21
ответ дан Outlaw Programmer 26 August 2018 в 01:41
поделиться

Загрузка изображения из файла Jar во время выполнения такая же, как загрузка изображения при выполнении из IDE, например, netbeans, разница заключается в том, что при загрузке изображения из JAR-файла путь должен быть правильным и его чувствительный к регистру (очень важно). Это работает для меня

 image1 = new javax.swing.ImageIcon(getClass().getResource("/Pictures/firstgame/habitat1.jpg"));
        img = image1.getImage().getScaledInstance(lblhabitat1.getWidth(), lblhabitat1.getHeight(), Image.SCALE_SMOOTH);
        lblhabitat1.setIcon(new ImageIcon(img));

, если p в «/Pictures/firstgame/habitat1.jpg» в нижнем регистре, он не будет работать. проверки пробелов, случаев и орфографии

0
ответ дан Tobore Igbe 26 August 2018 в 01:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: