Фоновый рисунок на JPanel + компоненты

Всем привет!

Перебрал ворох информации, но не могу понять:

Как на панель задать фоновый рисунок так, что бы можно было добавлять другие компоненты (кнопки, текстовые поля и т.д.).

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


Ответы (1 шт):

Автор решения: Митяй

Для этого вы должны использовать метод paintComponent класса JPanel, пример:

class Example extends JPanel{

    private BufferedImage image;

    public void paintComponent(Graphics g){
        try {
            image = ImageIO.read(new File("background.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        super.paintComponent(g);
        g.drawImage(image, 0, 0, this);
    }
}

Рекомендую в будущем не связываться с библиотекой swing, т.к она устарела. Используйте JavaFX в сочетании с Scene Builder.

----------Дополнено----------

    private JPanel panel = new JPanel();

private BufferedImage image;

public void paintComponent(Graphics g){
    try {
        image = ImageIO.read(new File("background.png"));
    } catch (IOException e) {
        e.printStackTrace();
    }
    panel.paint(g);
    g.drawImage(image, 0, 0, panel);
}
→ Ссылка