Изображение не появится на JLabel. Пробовал несколько решений - PullRequest
0 голосов
/ 18 января 2020

Я пытаюсь добавить изображение в JLabel для установки JFrame, и после нескольких часов исследований оно по-прежнему загружает JFrame только с 2 кнопками внизу. Рассматриваемое изображение находится в том же каталоге, что и класс, за исключением папки вниз (я пробовал в той же папке, но безрезультатно). Я довольно новичок в кодировании, поэтому, пожалуйста, потерпите меня.

Это большая часть кода, кроме слушателей действия кнопки (класс также расширяет JFrame)

JPanel jp = new JPanel();
JPanel jb = new JPanel(new GridLayout(1, 2, 20, 20));
JLabel jl = new JLabel();
JButton end = new JButton("End");
JButton next = new JButton("Next");

jl.setIcon(new ImageIcon("notes/daWay.jpg"));

setSize(900, 700);
jp.add(jl, new FlowLayout());
add(jp);
jb.add(end);
jb.add(next);
add(jb, BorderLayout.PAGE_END);

setVisible(true);

У меня есть попробовал: установить границы меток, проверил, был ли ImageIcon нулевым (это не было), сделать ImageIcon своей собственной переменной, затем добавить переменную в Jlabel, getContentPane для JFrame, используя BufferedImage и ImageIO с try и catch (с url и без) , getClass, getClassLoader, getResource, imageUpdate для метки, с FlowLayout и без, jpegs и pngs, очистка фрейма за исключением одной метки и многое другое. Даже расширение окна во время запуска изображения не появляется, пожалуйста, помогите!

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

1 Ответ

2 голосов
/ 18 января 2020

Используемый конструктор ImageIcon принимает в качестве аргумента путь к файлу .

Чтобы ваш код работал, вам, таким образом, придется передать абсолютный путь к файлу, поскольку относительные разрешаются на основе каталога current , а не на основе класса, содержащего путь к файлу.

Текущий каталог - это каталог, из которого выполняется команда java.

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

Поэтому вместо этого следует использовать

new ImageIcon(YourClass.class.getResource("notes/daWay.jpg"))

. Это позволит загрузить изображение из ресурса daWay.jpg. находится в подпакете notes пакета YourClass.

...