Q:

Проблемы с отображением кастомного JComponent

Попытался создать свой класс JImage, наследующий JComponent и содержащий в себе картинку. Окно приложения запускается, но не видно самой картинки.
Главный класс:
public class Test {
    public static void main(String[] args) {
        Window window = new Window();
    }
}

Класс с фреймом:
public class Window extends JFrame {
    public Window() {
        setSize(1000,500);
        setLayout(null);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        JImage img = new JImage();
        img.setLayout(null);
        img.setSize(100, 100);
        img.setLocation(100,100);
        img.setImage("img.png");
        img.setVisible(true);

        add(img);
    }
}

Класс с компонентом:
public class JImage extends JComponent {
    Image img;

    public JImage () {}

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(getImage(), getLocation().x, getLocation().y, getSize().width, getSize().height, null);
    }

    void setImage(String filePath) {
        try {
            this.img = ImageIO.read(new File(filePath));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    Image getImage() {
        return this.img;
    }
}

Помогите, пожалуйста, решить данную проблему. Заранее спасибо.
P.S. Файл с картинкой существует, проверил в проводнике в корне проекта через exists(new File(filePath)).

A:

Вам нужно так рисовать изображение:
            g.drawImage(getImage(), 0, 0, getSize().width, getSize().height, null);

здесь X и Y это координаты относительно самого компонента JImage.
Плюс
    setVisible(true);

из класса Window необходимо переместить в самый конец.

