Добавить изображение в JAR Java

Я использую некоторые изображения вJFrameЯ дал путь для загрузки изображения в панель кадра, но когда я сделал jar приложения, он не отображает изображения.
Где я должен разместить изображение?
Как мне указать путь?

setIconImage(Toolkit.getDefaultToolkit().getImage(
                "D:\\RFT\\src\\dailogBox\\dump.jpg"));

как это я сделал.

Ответы на вопрос(7)

затем (при условии, что jar находится на вашем пути к классам), используйте загрузчик классов длязагрузить это как поток.

 10 сент. 2015 г., 10:01
. GetClass () getResourceAsStream (& Quot; /icons/closed_folder_small.png");
 08 июл. 2009 г., 08:37
Можете ли вы дать мне пример для этого?

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

src (Java files in source packges are here)

** PACKAGE YOU NAMED IN PROJECT**

file.java

Resources

image.jpg

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

jToggleButton1.setIcon(new javax.swing.ImageIcon(this.getClass().getResource("/resources/image.jpg")));

например, создать папку с именем resources в вашем jar-файле и ссылаться на ваши изображения оттуда, используя относительный путь ....

 08 июл. 2009 г., 08:33
Я вставил изображение в исходную папку, как установить относительный путь?

скопируйте все ваши изображения в этот пакет (когда вы создаете пакет, папка с именем вашего пакета будет создана внутри папки src вашего проекта, поэтому копируйте изображения в нее)

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

Пример 1:

        this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/images/yourimagename")));

Пример 2:

        URL imageurl = getClass().getResource("/images/imagename");//assuming your package name is images 
        Image myPicture = Toolkit.getDefaultToolkit().getImage(imageurl);
        JLabel piclabel = new JLabel(new ImageIcon( myPicture ));
        piclabel.setBounds(0,0,myPicture.getWidth(null),myPicture.getHeight(null));

Теперь используйте этот JLabel Piclabel

This IS the best way to handle all images and icons in a JAR App.

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

Тогда просто используйте следующее3x lines of code в начале вашего конструктора для доступа к любому изображению, в котором вы нуждаетесь для чего угодно, включая образ SystemTray, который не принимает простой ImageIcon в качестве основного значка (странно, я знаю). 3x строки:

  URL iconUrl = this.getClass().getResource("/image-iconb.png");
  Toolkit tk = this.getToolkit();
  someimgicon = tk.getImage(iconUrl);

(someimgicon - это просто конструктор, объявленный переменной Image) Now you can установить значок окна так же просто, как:

setIconImage(someimgicon);

and в то же время используйте ту же переменную при настройке System TrayIcon, объявив:

 trayIcon = new TrayIcon(someimgicon, "SystemTray Demo", popupMenu);

Вышеуказанное позволяет легко и централизованно объявлять изображения или изображения изображений, не рискуя не хранить ресурсы изображения в нужном месте. Это делает его красивым и аккуратным, с JAR, содержащим все ваши изображения, автоматически скомпилированные во время выполнения и распространения вашей программы.

As a bonusПосле того, как JAR зарегистрирован в вашем classpath - вы можете в любое время без каких-либо хлопот добавлять любые другие изображения в тот же JAR-файл - Все просто работает, и добавленные изображения мгновенно доступны для вашего приложения.

Намного лучше, на мой взгляд.

 08 янв. 2017 г., 06:34
Мы должны заархивировать ВСЕ наши изображения и значки в собственный файл JAR, а затем сделать так, чтобы наша IDE создала другой файл JAR, который инкапсулирует исходный файл JAR? Какие?! Зачем

поместите ваше изображение в определенное место в вашем JAR-файле. Если вы поместите его в папку src, возможно, ваша IDE или ваш инструмент сборки автоматически упакуют его в JAR. В противном случае проверьте документацию вашего IDE / build-tool, в каком месте вы должны его поместить.

Второй шаг: доступ к файлу из вашей программы. Я предполагаю, что вы положили его в пакет (путь в вашем JAR) package1 / package2, и файл называется dump.jpg. В этом случае вы звоните:

setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/package1/package2/dump.jpg")));

getClass (). getResource (...) возвращает URL для ресурса на вашем пути к классам. Вы начинаете путь в classpath с символа "/"; и используйте полный путь / пакеты к вашему ресурсу, разделенные знаком "/".

 13 мар. 2014 г., 20:29
@KareemMesbah, вы бы просто назвали его MyClass.class.getResource (& quot; /path/to/file.jpg")
 03 окт. 2013 г., 10:44
@Mnementh, как это может работать, если мой BufferedImage статичен?
 15 сент. 2009 г., 07:21
только что решил эту проблему для меня. Спасибо :)

в которой изображение находится параллельно файлу jar. Пример:

Скажите в коде, который вы называете изображение следующим образом:

pic = new ImageIcon("Pics/buttonpic.jpg");

Это означает, что ваше изображение будет называться buttonpic и находится в папке Pics в каталоге вашего проекта. Теперь, после создания файла JAR, скопируйте эту папку Pics в ту же папку, где находится файл JAR.

Пример: если ваш файл jar находится на рабочем столе, поместите папку Pics на рабочий стол. Теперь, когда вы запустите файл jar, ваши изображения будут работать правильно. Теперь, чтобы скрыть тот факт, что у вас должна быть папка Pics рядом с файлом JAR, вы можете создать новую папку и поместить в нее папку JAR и папку Pics. Затем щелкните правой кнопкой мыши по банке и создайте ярлык, затем поместите этот ярлык на рабочий стол или там, где вы хотите иметь только файл баночки, и поместите созданную вами новую папку, где бы вы ни хотели ее скрыть.

 12 июл. 2017 г., 15:03
Я думаю, что Вы получили эти отрицательные голоса, потому что предпочтительным способом является хранение всех ваших активов в архиве JAR с приложением. Таким образом, вы должны распространять только один файл.

Ваш ответ на вопрос