Java Swing: невозможно загрузить изображение с помощью getResource

1

Я пытаюсь изолировать, где может возникнуть проблема при попытке добавить образ в каталог класса. (Выполняя это, когда я экспортирую как исполняемый JAR, изображение входит в пакет).

Итак, у меня есть файл strawberry.jpg, сидящий в 'C:\Users\sean\workspace\myApps\src\testing' Не могли бы вы сообщить, что мне не хватает? Благодарю!

package testing;

import java.awt.*;
import javax.swing.*;

public class IconTest {

    public static void main(String[] arguments) {

        JFrame frame1 = new JFrame();
        frame1.setTitle("Frame1");
        frame1.setSize(500, 500);
        frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        FlowLayout flo = new FlowLayout();
        frame1.setLayout(flo);

        JLabel label1 = new JLabel(new ImageIcon(
            IconTest.class.getResource("strawberry.jpg")));
        frame1.add(label1);
        frame1.setVisible(true);
    }
}
Теги:
swing
jlabel
embedded-resource

2 ответа

1
Лучший ответ

Я бы использовал SomeClass.class.getResourceAsStream("...") как в следующем примере:

public static void main(String[] arguments) throws IOException {

    JFrame frame1 = new JFrame();
    frame1.setTitle("Frame1");
    frame1.setSize(500, 500);
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    FlowLayout flo = new FlowLayout();
    frame1.setLayout(flo);

    InputStream resourceAsStream = IconTest.class.getResourceAsStream("strawberry.jpg");
    Image image = ImageIO.read(resourceAsStream);

    JLabel label1 = new JLabel(new ImageIcon(image));
    frame1.add(label1);
    frame1.setVisible(true);
}
  • 0
    Спасибо Патрик - это работает! Хотя я изменил каталог, как указано выше, в комментарии к Кеннету.
  • 0
    Привет, Патрик. Хотя код работает в Eclipse, экспорт в файл Runnable Jar и выполнение не дает результатов - нет окон и графических объектов. Тот же результат виден для другого приложения, использующего принцип, который вы рекомендовали выше. есть идеи? Спасибо!
Показать ещё 1 комментарий
1

Поместите файл изображения в каталог, в котором расположены ваши скомпилированные классы, и измените путь в коде yor, добавив "/" перед именем файла:

JLabel label1 = new JLabel(new ImageIcon(
        IconTest.class.getResource("/strawberry.jpg")));

Ресурсы ищутся в пути к классу.

  • 0
    Спасибо Кеннет. Я попробовал это, но все еще получил «источник не найден» в журнале отладки. Я также попытался скопировать файл strawberry.jpg в папку C: \ Users \ sean \ workspace \ SM Apps \ bin \ testing.
  • 0
    Просто удалось заставить код ниже работать, хотя с измененным каталогом выше. :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню