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")));
Ресурсы ищутся в пути к классам.