Я пытаюсь изолировать, где может возникнуть проблема при попытке добавить образ в каталог класса. (Выполняя это, когда я экспортирую как исполняемый 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);
}
}
Я бы использовал 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);
}
Поместите файл изображения в каталог, в котором расположены ваши скомпилированные классы, и измените путь в коде yor, добавив "/" перед именем файла:
JLabel label1 = new JLabel(new ImageIcon(
IconTest.class.getResource("/strawberry.jpg")));
Ресурсы ищутся в пути к классу.