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

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

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

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

3 ответов


нужно позвонить

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

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


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

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

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