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

Я пытаюсь определить, где может быть проблема при попытке добавить изображение в каталог классов. (Делая это, когда я экспортирую как работающий 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);
    }
}

2 ответа

Решение

Я хотел бы использовать 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);
}

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

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

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

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