Я изо всех сил пытался заставить JFrame перекрасить его содержимое. Я попытался использовать методы revaluate() и repaint() вместе после добавления новых компонентов в JFrame, но я не вижу изменения рамки.JFrame не обновляет его содержание
Вот простой графический интерфейс игры тральщика, которую я пытаюсь сделать.
Когда пользователь нажимает на одну из 3 верхних кнопок, они входят в следующий блок кода
private void drawGrid()
{
removeAll();
setLayout(new GridLayout(2,1));
add(new JButton("button"));
setVisible(true);
revalidate();
repaint();
setVisible(false);
setVisible(true);
}
При нажатии на кнопку, все приложение становится белым, но я не могу видеть новый Я добавил. Когда я удаляю две строки метода setVisible(), нажатие кнопки определенно удаляет компоненты, так как я не могу нажимать ни на одну из них сейчас, но 4 начальные кнопки все еще видны. Удаление методов revalidate или repaint не влияет на приложение.
Что еще я могу попробовать, чтобы приложение обновило и отобразило его новое содержимое.
Я попытался создать JPanel, а затем вставить все кнопки меню в эту панель, а затем добавить JPanel в основной JFrame, но графический интерфейс появляется в виде четырех кнопок, сжимаемых в сетку 2x2 в верхней половине JFrame, даже если я установил компоновку JPanel как сетку 4x1 – user217339
, как я мог вставить все кнопки в отдельный JPanel, а затем добавить JPanel в основной JFrame и визуально получить тот же результат, что и в настоящее время. – user217339
Убедитесь, что в 'JFrame' есть макет, установленный на' BorderLayout', убедитесь, что панель «меню» имеет макет, установленный в «GridLayout», с 1 столбцом и 0 строками. Вам не нужно иметь отдельные панели, для них нужно управлять на одной панели, например, игровое представление должно быть отдельной панелью, тогда вы можете более легко управлять кодом, а не пытаться динамически генерировать объекты «на лету» все время из одного класса – MadProgrammer