Как очистить / сбросить JFrame - PullRequest
2 голосов
/ 07 июня 2011

Я и мой друг решили поработать над карточной игрой, которая переключается между 3 экранами ( Player1HandScreen, Player2HandScreen и FightScreen ).

Как только Player1 выбрал свою карту из Player1HandScreen, Player1HandScreen приводит к Player2HandScreen, где Player2 делает то же самое.затем Player2HandScreen приводит к FightScreen, где сравниваются две карты, и один игрок объявляется победителем этого раунда.

Проблема, с которой мы сталкиваемся, заключается в том, что после завершения раунда мы хотим очистить Player1HandScreen, а также Player2HandScreen после обновления наших параметров, у нас возникают проблемы с успешным обновлением графического интерфейса.

Мы пытались использовать removeAll(), но мы не можем получить его до repaint() или validate().

Мы также изучили super.paintComponents(g) и updateUI(), но оба оставили нас сРазбитые надежды и мечты.

Ответы [ 2 ]

5 голосов
/ 07 июня 2011

если вы удалите все JComponent (s) из контейнера (только один раз в конце), необходимо указать контейнеру,

removeAll()//or remove(JComponent)
revalidate();
repaint();
0 голосов
/ 30 августа 2016

Попробуйте очистить Jpanel, используя:

paper.clearRect(0, 0, (int)panel.getSize().getWidth(), (int)panel.getSize().getHeight

, где бумага похожа на: Graphics paper = panel.getGraphics();

...