Компоненты JFrame исчезли.
Компоненты не исчезают. Кнопка и панель по-прежнему отображаются.
Я полагаю, вы имеете в виду, что пользовательский рисунок черного круга исчезает.
Я не понимаю, почему это происходит
Метод paint () фрейма отвечает за рисование всех дочерних компонентов фрейма. Таким образом, он перерисовывает JPanel, который вы добавляете в рамку, который, в свою очередь, рисует кнопку JButton, которую вы добавляете на панель.
Затем закрашивает черный круг в верхней части панели.
Когда вы нажимаете кнопка, которую вы перерисовываете только "панель", которая заставляет JButton и красный круг быть нарисованным
Вы теряете рисунок черного круга, потому что больше не вызываете код для рисования этого круга.
Если вы хотите, чтобы черный круг остался, у вас есть несколько вариантов:
Лучшее решение - НЕ перекрывать краску () на раме. Вместо этого сделайте всю пользовательскую живопись в своей панели. Так что нарисуйте черные и красные круги.
перекрасить весь кадр в коде ActionListener:
//repaint();
SwingUtilities.windowForComponent(button).repaint();
использовать стеклянную панель, как предложено в ответе Тома.