1. ホーム
  2. java

[解決済み] 新しいゲームでのJFrameとJPanelのクリアについて

2022-02-07 02:17:03

質問

三目並べや線を引くためのシンプルなJPanelがあります。 TTTクラスはJPanelを継承しており、内部にGameLogicオブジェクトを保持しています。

は、アプリケーションは、TTTを追加するMainのJFrameであり、すべてが良好です。

しかし、私は新しいゲームを再起動したい場合。
TTTでquot;restart"を呼び出すと、基本的には次のようになります:gameLogic = new GameLogic(); & repaint();

これでデータ配列はきれいになり、線だけ描画されるようになりました。

いずれにせよ、Windowsは全く変わりません。

いろいろと試してみたのですが、うまくいきません。 何かいい方法はないでしょうか?

GameBoard.java。

public class GameBoard extends javax.swing.JPanel {
private GameBoardLogic GameLogic;

//.....

public void Restart()
{
    GameLogic = new GameBoardLogic();
    removeAll();
    repaint();
}

Main.javaです。

public class Main {
private static GameBoard TTT;
private static JFrame application;

public static void main(String[] args) {

    application = new JFrame("Tic-Tac-Tow");
    TTT = new GameBoard();
    application.add(TTT);
    application.setSize(350, 350);
    application.setVisible(true);
    //.....

    if ( JOptionPane.showConfirmDialog(null, "Do you want to play again?") == 
                                                 JOptionPane.YES_OPTION )
    {
        application.removeAll();
        TTT.Restart();
        application.add(TTT);
        application.validate();
     }

解決方法は?

これは私のために動作します

panel.removeAll();
//add your elements
revalidate();
repaint();