4

私は三目並べ用の単純な JPanel を持っており、線を描画しています...そのため、クラス TTT は JPanel を拡張し、内部に GameLogic オブジェクトを保持します。

すべて問題ありません。アプリケーションは TTT を追加したメインの JFrame であり、すべて問題ありません。

しかし、新しいゲームを再開したいとき
は、基本的に行う TTT で「再起動」を呼び出します: gameLogic = new GameLogic(); & 再描画();

今、私のデータ配列はきれいで、線だけを描くはずです..

いずれにせよ、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();
     }
4

1 に答える 1

14

これは私のために働く

panel.removeAll();
//add your elements
revalidate();
repaint();
于 2012-04-28T21:38:31.887 に答える