Как удалить все компоненты из 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
по мере необходимости.
предполагая, что ваша цель, чтобы добавить что-то еще после вы очищаете кадр, который вы должны вызвать validate после добавление компонентов thoes для его обновления
getContentPane().removeAll();
add(new component);
validate();