2017-12-10 15 views
0

私はTicTacToeゲームを作成しようとしています。 1つのボードのみがユーザによって再生可能であり、ユーザがセルをクリックすると、セルはX/Oで満たされ、同じセル(第2のボードのランダムな場所に)はX/Oで満たされる。ユーザーはどちらのボードでも勝つことができます。この問題は、ボードを構築してそれぞれのJPanelに表示させるときに発生します。私は理想的にはJFrameをフルスクリーンにしてsetSize(2000,2000)したいと思っています。私はJFrameがポップアップし、両方のTicTacToeグリッドが一気に盛り上がってもプログラムを実行します。ゲームのステータスの更新があるようになっているの底部(Xのターン、Xは、などをゲームに勝った)も踏み付けているように見える:GridLayoutはJFrame/JPanelで一緒にSquishedしました

Squished grids screenshot

だから私は(パックを試してみることにした)の代わりに、 setSize()。理想的には私がしたい

Ideal JFrame

:理想的には、これは私がJFrameのが見えるようにしたいものです

Small JFrame pack screenshot(JFrame is top left corner)

:良いニュースは、ゲームボードはunsquished現れたが、JFrameのがめちゃくちゃ小さかったということですJFrameをフルスクリーンにすることができますが、setSize()の代わりにpack()を使用するとJFrameを大きくする解決策が得られます。

フルスクリーンのJFrameでグリッドを非表示にするにはどうすればよいですか、またはpack()をもっと大きくするにはどうすればよいですか?私はJFrameのを構築する方法の

コード:私はどちらかフルスクリーンのJFrameでグリッドをunsquishか、またはどのように私は(パックを作るにはどうすればよい

public Attempt(){ 
    JFrame frame = new JFrame("Shadow Tic Tac Toe Game"); 
    frame.setSize(2000,2000); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JPanel panel1 = new JPanel(); 
    JPanel panel2 = new JPanel(); 

    // Adds panel1 which will hold the first TicTacToe game. 
    panel1.setLayout(new GridLayout(3,3,0,0)); 
    for(int d = 0; d < 3; d++){ 
    for(int c = 0; c < 3; c++){ 
     panel1.add(cell[d][c] = new Cell()); 
    } 
    } 
    // Builds Panel2 which will hold the second TicTacToe game 
    panel2.setLayout(new GridLayout(3,3,0,0)); 
    row = rand.nextInt(3); 
    column = rand.nextInt(3); 
    for(int n = 0; n < 3; n++){ 
    panel2.add(cell[row][column] = new Cell()); 
    } 
    // Adds Panel1 to the JFrame 
    frame.add(panel1, BorderLayout.EAST); 
    // Adds Panel2 to the JFrame 
    frame.add(panel2, BorderLayout.WEST); 
    // Updates the status of the game here (win/lose/draw/whose turn it is) 
    frame.add(jlblStatus, BorderLayout.SOUTH); 
    // Calls method Chose() which allows the player to chose which token they will play as 
    Chose(); 
    frame.setVisible(true); 

}

答えて

1

)大きめ?

あなたは、セルのサイズを返すために、あなたのCell部品のgetPreferredSize()メソッドを実装する必要があります。次に、フレームをパックすると、セルが希望のサイズで表示されます。

私はsetSize(2000,2000)のようにJFrameをフルスクリーンにしたいのが理想です。

(2000、2000)のサイズは意味をなさない。私はスクエアスクリーンは知らない。いずれにしても、setSize()を使用しないでください。代わりに、フルスクリーンフレームを使用する場合は、次のようにします。

frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
関連する問題