Как отрисовать новые элементы, удалив старые, в Swing после нажатия кнопки

Рейтинг: 0Ответов: 1Опубликовано: 18.06.2023

Делаю крестики нолики с GUI на Swing. Вначале игроки вводят имя: введите сюда описание изображения

После нажатия на кнопку имена сохраняются в модели и начинается сама игра:

введите сюда описание изображения

Вопрос в следующем: что нужно сделать, чтобы игра перешла из первого состояния на первой картинке в состояние на второй картинке? Нужно перерисовать JPanel, или лучше удалить этот объект jpanel и создать новый, поместить его на jframe и отрисовать его, как сейчас я и делаю, но нормально это всё не перерисовывается.

Ответы

▲ 0

Вам нужно удалить из Frame текущую панель и добавить новую. Ранее был опыт написания крестиков-ноликов. В моей версии игры можно было выбрать играть с компьютером или вдвоем, в зависимости от выбора загружалось поле

private void buttonClick(ActionEvent e) {
    this.getContentPane().remove(currentPanel);

    if (e.getSource().equals(button1)) {
        this.getContentPane().add(playerAndComputer.getPanel(), BorderLayout.CENTER);
        currentPanel = playerAndComputer.getPanel();

    } else if (e.getSource().equals(button2)) {
        this.getContentPane().add(playerAndPlayer.getPanel(), BorderLayout.CENTER);
        currentPanel = playerAndPlayer.getPanel();

    }
    currentPanel.revalidate();
    this.repaint();
}