Как удалить все компоненты из JFrame в Java? - PullRequest
27 голосов
/ 19 февраля 2012

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

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

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

Ответы [ 3 ]

49 голосов
/ 19 февраля 2012

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

 private JFrame frame = new JFrame();
 ...
 ...
 frame.getContentPane().removeAll();
 frame.repaint();

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

5 голосов
/ 18 декабря 2013
getContentPane().removeAll();
getContentPane().repaint();
4 голосов
/ 27 августа 2015

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

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