В настоящее время я разрабатываю меню с несколькими экранами с несколькими кнопками на каждом экране. Чтобы использовать кнопки поверх фонового изображения, которое находится в jLabel (по умолчанию я не могу поместить кнопки в ТОП jLabel), я использовал GridBagLayout с двумя панелями / экраном меню, одна панель содержит кнопки (opaque = false) и одна панель с фоновым изображением или jLabel. Чтобы переключать отображаемые текущие панели, в зависимости от того, где пользователь находится в меню, я сделал каждый экран меню (или каждые 2 панели) отдельными методами, а не классами.
Теперь я подошел к тому моменту, когда я работаю над частями интерфейса, которые излишне сложны, и я не думаю, что GridBag будет служить моим целям, поэтому мне было интересно, есть ли другой способ нарисуйте мое фоновое изображение, все еще имея возможность использовать мои кнопки в верхней части изображения.
Самый популярный способ поиска - переопределение метода paintComponent, но я не могу этого сделать, поскольку я создал свои JPanels в отдельных методах, а не в классах. Все они содержатся в моем оригинальном JFrame.
Помощь будет принята с благодарностью, спасибо!
Только что добавил этот код, но мой фон почему-то остается белым? Пробую другое предложение прямо сейчас, спасибо, ребята!
private void mainPanel() {
icon = new ImageIcon(getClass().getResource("/phantasma/menuv1.png"));
mainContainer1 = new javax.swing.JPanel() {
@Override
protected void paintComponent(Graphics g) {
g.drawImage(icon.getImage(), 0,0, null);
super.paintComponent(g);
}
};