Java Swing: Отображение изображений из в Jar

голоса
42

При запуске приложения Java из затмить мой ImageIcon показывает просто отлично.

Но после создания баночки пути к изображению, очевидно, получает облажался.

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

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

Задан 27/08/2008 в 21:14
источник пользователем
На других языках...                            


5 ответов

голоса
31

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

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

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

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

Ответил 05/09/2008 d 12:30
источник пользователем

голоса
21

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

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

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

MyJar.jar
- ком (файлы классов в здесь)
- изображения
---- image.jpg

Ответил 27/08/2008 d 21:18
источник пользователем

голоса
8

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

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

 - 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();
}

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

BTW getClass().getClassLoader().getResourceAsStream("/img/bg.png")- который я попробовал первый - вернулся мне нулевую InputStream.

Ответил 12/03/2013 d 06:09
источник пользователем

голоса
1

В NetBeans 8.1 , что я сделал это , чтобы включить папку иконки и другие изображения , называемые ресурсы внутри Src папки в файле проекта. Таким образом , всякий раз , когда я построить Jar файл папка входит there.The дерево файлов должно быть таким:

  • ЦСИ (Java-файлы в исходной packges здесь)
  • ** ПАКЕТ ВЫ ИМ в проекте **

    • file.java
  • Ресурсы

    • image.jpg

Код должен быть как:

jToggleButton1.setIcon(new javax.swing.ImageIcon(this.getClass().getResource("/resources/image.jpg")));
Ответил 07/02/2017 d 08:21
источник пользователем

голоса
0

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

 image1 = новый javax.swing.ImageIcon (GetClass () getResource ( "/ Фотографии / firstgame / habitat1.jpg").);
        . IMG = image1.getImage () getScaledInstance (lblhabitat1.getWidth (), lblhabitat1.getHeight (), Image.SCALE_SMOOTH);
        lblhabitat1.setIcon (новый ImageIcon (IMG));

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

Ответил 07/12/2015 d 16:10
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more