Значок изображения JButton не отображает файл .png

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

Я пытаюсь отобразить изображение "b.png" на JButton, и когда я переворачиваю кнопку, значок меняется.

package GUI_JButton;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Gui extends JFrame {

    private JButton reg;
    private JButton custom;

    public Gui() {
        super("Title goes here");
        setLayout(new FlowLayout());

        reg = new JButton("reg button"); // create reg button
        add(reg); // add reg button to JFrame

        // initialize images
        Icon b = new ImageIcon(getClass().getResource("images/imageA.png"));
        Icon x = new ImageIcon(getClass().getResource("images/imageB.png"));

        custom = new JButton("custom button", b); // create custom button
        custom.setRolloverIcon(x);
        add(custom); // add button to JFrame

        HandlerClass handler = new HandlerClass();
        reg.addActionListener(handler);
        custom.addActionListener(handler);

    }

    private class HandlerClass implements ActionListener {

        public void actionPerformed(ActionEvent event) {
            JOptionPane.showMessageDialog(null,
                    String.format("%s", event.getActionCommand()));

        }

    }

}

Изображения находятся в папке с именем images, которая находится в папке src вместе с файлами Gui.java и файлами TESTMain.java.

Ошибка, которую я получаю, - это исключение нулевого указателя из Main. я пытался

Icon b = new ImageIcon("images/imageA.png"); 

Это компилируется, но изображение не отображается. я тоже пробовал

custom = new JButton("custom", new ImageIcon("images/imageA.png"));

А также

custom = new JButton("custom", new ImageIcon(getClass().getResource("images/imageA.png"));

Я знаю, что getClass().getResource() предпочтительнее, так как изображения должны быть скомпилированы с банкой.

Любые идеи по отображению моих изображений?


person David    schedule 19.07.2013    source источник
comment
Измените getResource("images/imageA.png") на getResource("/images/imageA.png").   -  person Andrew Thompson    schedule 19.07.2013


Ответы (1)


Ваша папка с изображениями должна находиться в той же папке, что и ваши .class файлы, а не в src с вашими .java файлами.

person Luke    schedule 19.07.2013