Ответ 1
Вы должны позвонить
getContentPane().removeAll();
removeAll()
не был переопределен как add()
или remove()
для перехода к contentPane
по мере необходимости.
Я пишу программу, где у меня есть JFrame, и я хочу удалить из нее все компоненты, а затем добавить к ней только один компонент и перерисовать его. То, что у меня до сих пор, похоже на код ниже (вызываемый в объекте, который реализует JFrame, где StartPanel реализует JPanel):
removeAll();
startPanel = new StartPanel();
startPanel.setVisible(true);
add(startPanel);
revalidate();
repaint();
Однако, когда я запускаю код, он показывает пустое окно (не startPanel), и когда я минимизирую/изменяю размер окна, окно становится черным. Если я не укажу removeAll()
и нет элементов, уже находящихся на JFrame, он просто отобразит startPanel. Любые идеи о том, как на самом деле удалить все, а затем получить новую панель, которая все еще отображается?
Вы должны позвонить
getContentPane().removeAll();
removeAll()
не был переопределен как add()
или remove()
для перехода к contentPane
по мере необходимости.
getContentPane().removeAll();
getContentPane().repaint();
Предполагая, что ваша цель - добавить что-то еще после вы очищаете фрейм, который вы должны вызывать добавление компонентов для его обновления
getContentPane().removeAll();
add(new component);
validate();