Не отображается JLabel?

Подскажите пожалуйста, как исправить код, чтобы отображался JLabel pacmanLabel. Дело не в пути к файлу, тут он у меня полный. Дело в Layout. Поэкспериментировала, картинка отображается только тогда, когда поменять Layout в mazePanel на new BorderLayout(). Но тогда у меня плывет весь общий вид, я уже запуталась, если честно в них, поэтому прошу помощи у вас. Мне нужно чтобы сначала шла mazePanel, под ней находилась infoPanel, а иконка персонажа pacmanLabel находилась на mazePanel. Заранее благодарю

import javax.swing.*;
import java.awt.*;

public class GamePanel extends JPanel {

    JLabel pacmanLabel;
    MazePanel mazePanel;
    JPanel infoPanel;


    GamePanel() {

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setTitle("Pacman");
        frame.setPreferredSize(new Dimension(480, 600));
        frame.setLayout(new BorderLayout());

        mazePanel = new MazePanel();
        mazePanel.setBounds(0,0,480,650);

        ImageIcon pacmanIcon = new ImageIcon("/Users/aleksandraselivanova/Desktop/Pacman/Pacman-2.png");
        pacmanLabel = new JLabel(pacmanIcon);
        pacmanLabel.setBounds(50, 50, 33, 33);
//        pacmanLabel.setLocation(50,50);

        infoPanel = new JPanel();
        infoPanel.setPreferredSize(new Dimension(480, 50));
        infoPanel.setBackground(Color.BLACK);
        infoPanel.setLayout(new FlowLayout(FlowLayout.LEFT));

        JLabel scoreLabel = new JLabel("Score: 0");
        scoreLabel.setForeground(Color.WHITE);
        JLabel livesLabel = new JLabel("Lives: 3");
        livesLabel.setForeground(Color.WHITE);

        frame.add(mazePanel);
        frame.add(infoPanel, BorderLayout.SOUTH);
        mazePanel.add(pacmanLabel,100);
        infoPanel.add(scoreLabel);
        infoPanel.add(livesLabel);

        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}


import javax.swing.*;
import java.awt.*;

public class MazePanel extends JPanel {

    private final int unitSize = 30;
    private final int[][] mazePanel = {
            {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
            {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1},
            {1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1},
            {1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1},
            {1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1},
            {1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1},
            {1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1},
            {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1},
            {1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1},
            {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
            {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
            {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
            {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
            {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
            {1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1},
            {1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1},
            {1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1},
            {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
    };

    MazePanel(){
        setLayout(null);
        setPreferredSize(new Dimension(unitSize * mazePanel[0].length, unitSize * mazePanel.length));
        setOpaque(true);
        createMazePanels();
    }

    private void createMazePanels() {
        JPanel[][] panels = new JPanel[mazePanel.length][mazePanel[0].length];
        for (int i = 0; i < mazePanel.length; i++) {
     

   for (int j = 0; j < mazePanel[i].length; j++) {
            panels[i][j] = new JPanel();
            panels[i][j].setPreferredSize(new Dimension(unitSize, unitSize));
            if (mazePanel[i][j] == 1) {
                panels[i][j].setBackground(Color.BLUE);
            } else {
                panels[i][j].setBackground(Color.BLACK);
            }
            panels[i][j].setBounds(j * unitSize, i * unitSize, unitSize, unitSize);
            add(panels[i][j]);
        }
    }
}

}


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