Как добавить панель с кнопками или лейблами на изображение в Java
У меня есть отрисованное изображение и я хочу в его определенную область вставить панель, которая содержит в себе таблицу из JButton или JLabel (пока не решил что лучше), но совершенно не понимаю как это сделать, потому что если просто добавляю еще одну панель, кроме панели с изображением - изображение или пропадает вовсе или становится очень маленьким шириной и высотой в несколько пикселей. Я новичок в программировании, поэтому буду рад любым советам. Спасибо! Вот исходный код класса:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Shop extends JFrame {
JFrame shopF;
FishBase fb;
int mouseClicX;
int mouseClicY;
JPanel listVar;
Shop(){
shopF = new JFrame("Рыболовный магазин");
shopF.setSize(800,600);
shopF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
shopF.setResizable(false);
shopF.setLocationRelativeTo(null);
shopF.add(new ShopPanel());
shopF.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent mouseEvent) {
mouseClicX = mouseEvent.getX();
mouseClicY = mouseEvent.getY();
if (mouseEvent.getX()>660&&mouseEvent.getY()>560){
fb = new FishBase();
shopF.setVisible(false);
shopF.dispose();
}
repaint();
}
@Override
public void mousePressed(MouseEvent mouseEvent) {
}
@Override
public void mouseReleased(MouseEvent mouseEvent) {
}
@Override
public void mouseEntered(MouseEvent mouseEvent) {
}
@Override
public void mouseExited(MouseEvent mouseEvent) {
}
});
listVar = new JPanel();
listVar.setSize(210,300);
shopF.setVisible(true);
}
public static void main(String[]args){
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Shop();
}
});
}
class ShopPanel extends JPanel{
JPanel panel = new JPanel();
Image imageBackground = new ImageIcon("src\\Image\\interface\\shop.jpg").getImage();
Image imageFon = new ImageIcon("src\\Image\\interface\\shop_part2.gif").getImage();
Image imageText = new ImageIcon("src\\Image\\interface\\shop_part1.gif").getImage();
public void paint(Graphics g){
g = (Graphics2D)g;
g.drawImage(imageBackground, 0,0, null);
g.setFont(new Font("TimesRoman", Font.PLAIN, 18));
g.drawString("назад", 680, 550);
g.drawImage(imageFon,225,10,null);
g.drawImage(imageText,554,10,null);
}
}
}