Подтвердить что ты не робот

Как удалить все компоненты из JFrame в Java?

Я пишу программу, где у меня есть JFrame, и я хочу удалить из нее все компоненты, а затем добавить к ней только один компонент и перерисовать его. То, что у меня до сих пор, похоже на код ниже (вызываемый в объекте, который реализует JFrame, где StartPanel реализует JPanel):

removeAll();    
startPanel = new StartPanel();
startPanel.setVisible(true);
add(startPanel);
revalidate();
repaint();

Однако, когда я запускаю код, он показывает пустое окно (не startPanel), и когда я минимизирую/изменяю размер окна, окно становится черным. Если я не укажу removeAll() и нет элементов, уже находящихся на JFrame, он просто отобразит startPanel. Любые идеи о том, как на самом деле удалить все, а затем получить новую панель, которая все еще отображается?

4b9b3361

Ответ 1

Вы должны позвонить

 getContentPane().removeAll();

removeAll() не был переопределен как add() или remove() для перехода к contentPane по мере необходимости.

Ответ 2

getContentPane().removeAll();
getContentPane().repaint();

Ответ 3

Предполагая, что ваша цель - добавить что-то еще после вы очищаете фрейм, который вы должны вызывать добавление компонентов для его обновления

getContentPane().removeAll();
add(new component);
validate();