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().