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

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

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

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

7 ответов

Первый шаг: поместите ваше изображение в определенное место в вашем 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 с "/" и используете полный путь / пакеты к вашему ресурсу, разделенные "/".

Это лучший способ обрабатывать все изображения и значки в приложении JAR.

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

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

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

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

setIconImage(someimgicon);

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

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

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

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

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

Сначала создайте пакет (скажем, изображения) в Source Packages

скопируйте все ваши изображения в этот пакет (когда вы создаете пакет, папка с именем вашего пакета будет создана внутри папки 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

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

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

  • src (файлы Java в исходных пакетах здесь)
  • ** УПАКОВКА, которую вы назвали в проекте **

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

    • image.jpg

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

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

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

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

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

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

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

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

Другие вопросы по тегам