FlowLayout, добавление в контейнер после отрисовки

Добавил обработчик события нажатия на панель. Когда на нее нажимаю, она должна удалиться - это работает. Но после этого вместо нее(не обязательно) должна добавиться еще одна панель такого же размера. Но она не добавляется. Помогите, пожалуйста, решить эту проблему. `

MainFrame(){
    setTitle("Домино");
    setSize(new Dimension(1920,1080));
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new BorderLayout());
    //setResizable(false);
    setExtendedState(JFrame.MAXIMIZED_BOTH);
    JPanel south = new JPanel();
    JPanel north = new JPanel();
    JPanel west = new JPanel();
    JPanel east = new JPanel();
    JPanel center = new JPanel();
    south.setPreferredSize(new Dimension(1620,150));
    north.setPreferredSize(new Dimension(1620,150));
    west.setPreferredSize(new Dimension(150,780));
    east.setPreferredSize(new Dimension(150,780));
    south.setLayout(new FlowLayout());
    for(int i = 0; i < 8; i++){
        JPanel forSouth = new JPanel();
        forSouth.setBackground(Color.RED);
        forSouth.setPreferredSize(new Dimension(80,130));
        forSouth.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                forSouth.setBackground(Color.WHITE);
                System.out.println(center.getSize());
            }

            @Override
            public void mouseExited(MouseEvent e) {
                forSouth.setBackground(Color.RED);
            }
        });
        south.add(forSouth);
    }
    for(int i = 0; i < 8; i++){
        JPanel forSouth = new JPanel();
        forSouth.setBackground(Color.RED);
        forSouth.setPreferredSize(new Dimension(80,130));
        forSouth.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                forSouth.setBackground(Color.WHITE);
            }

            @Override
            public void mouseExited(MouseEvent e) {
                forSouth.setBackground(Color.RED);
            }
        });
        north.add(forSouth);
    }
    //west.setLayout(new BoxLayout(west, BoxLayout.Y_AXIS));
    for(int i = 0; i <15; i++){
        JPanel forSouth = new JPanel();
        forSouth.setBackground(Color.BLUE);
        forSouth.setPreferredSize(new Dimension(120,60));
        forSouth.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                forSouth.setBackground(Color.WHITE);
            }

            @Override
            public void mouseExited(MouseEvent e) {
                forSouth.setBackground(Color.BLUE);
            }

            @Override
            public void mouseClicked(MouseEvent e) {
                west.remove(forSouth); // Вот тут проблема.
                west.repaint(); //?
                JPanel temp = new JPanel();
                temp.setBackground(Color.BLUE);
                temp.setPreferredSize(new Dimension(120,60));
                west.add(temp);
                west.repaint();//?
            }
        });
        if(i >= 11) west.setPreferredSize(new Dimension(280,780));
        west.add(forSouth);
    }
    for(int i = 0; i <11; i++){
        JPanel forSouth = new JPanel();
        forSouth.setBackground(Color.BLUE);
        forSouth.setPreferredSize(new Dimension(120,60));
        forSouth.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                forSouth.setBackground(Color.WHITE);
            }

            @Override
            public void mouseExited(MouseEvent e) {
                forSouth.setBackground(Color.BLUE);
            }
        });
        east.add(forSouth);
    }

    add(south, BorderLayout.SOUTH);
    add(north, BorderLayout.NORTH);
    add(west, BorderLayout.WEST);
    add(east, BorderLayout.EAST);
    add(center, BorderLayout.CENTER);
    south.setBackground(Color.DARK_GRAY);
    north.setBackground(Color.BLUE);
    east.setBackground(Color.GREEN);
    west.setBackground(Color.RED);
    setVisible(true);
}

} `

UPDATE: Заметил забавный факт. Когда сворачиваю и разворачиваю фрейм - элементы, которые должны появиться появляются.


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

Автор решения: Никита Скворцов

Если у кого-то возникнет такая проблема, то вот решение. Метод doLayout().

→ Ссылка