Вы можете выполнить panel.repaint()
, как указано в комментарии @Jeremy, однако пользовательский интерфейс все равно изменится при изменении размера окна.Причина в том, что удаление элементов из JPanel приведет к изменению размера панели.Операция перерисовки не приведет к изменению размера панели до тех пор, пока JFrame не перепроверит свой макет (как это происходит при изменении размера окна).
Чтобы убедиться, что макет правильно выложен при изменении, вы можете позвонить frame.validate()
.Эта операция приведет к повторной проверке JFrame себя и всех дочерних компонентов, что является той же самой операцией, которая происходит во время события изменения размера окна.Чтобы выполнить этот метод в своем коде, вам нужно изменить JFrame frame
на final, то есть
final JFrame frame = new JFrame("test");