Фоновый рисунок на 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);
}