В настоящее время я разрабатываю меню с несколькими экранами с несколькими кнопками на каждом экране. Чтобы использовать кнопки поверх фонового изображения, которое находится в jLabel (по умолчанию я не могу размещать кнопки в верхней части jLabel), я использовал GridBagLayout с двумя панелями/экраном меню, одна панель с кнопками (непрозрачная = false) и одну панель с фоновым изображением или jLabel. Чтобы переключать текущие отображаемые панели в зависимости от того, где пользователь находится в меню, я сделал каждый экран меню (то есть каждые 2 панели) отдельными методами, а не классами.
Теперь я дошел до того, что работаю над частями интерфейса, которые излишне сложны, и я не чувствую, что GridBag будет служить моим целям, поэтому мне было интересно, есть ли другой способ нарисовать мой фон. изображение, по-прежнему имея возможность использовать мои кнопки поверх изображения.
Самым популярным способом, который я искал, было переопределение метода paintComponent, но я не могу этого сделать, так как я создал свои панели JPanel в отдельных методах, а не в классах. Все они содержатся в моем исходном 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);
}
};
super.paintComponent()
в качестве первого вызова переопределения вашего paintComponent. В противном случае вы можете стереть все, что было нарисовано ранее. - person Hovercraft Full Of Eels   schedule 25.09.2011