gpt4 book ai didi

java - JFrame/JPanel 中的 GridLayout 被挤压在一起

转载 作者:行者123 更新时间:2023-12-02 11:53:32 25 4
gpt4 key购买 nike

我正在尝试创建一个 TicTacToe 游戏'。用户只能玩一个板,当用户单击某个单元格时,该单元格将填充 X/O,并且同一单元格(在第二 block 板的随机点上)将填充 X/O。用户可以在任一棋盘上获胜。当尝试构建面板并让它们在各自的 JPanel 中显示时,就会出现问题。理想情况下,我希望 JFrame 全屏显示,因此我设置了Size(2000,2000)。当我运行该程序时,虽然 JFrame 弹出,并且两个 TicTacToe 网格都被压在一起。底部应该有游戏状态更新的部分(X 回合、X 赢得游戏等)似乎也被压扁了:

Squished grids screenshot

所以我决定尝试 pack() 而不是 setSize()。好消息是游戏板没有被压扁,但 JFrame 非常小:

Small JFrame pack screenshot(JFrame is top left corner)

理想情况下,这就是我想要的 JFrame 的样子:

Ideal JFrame

理想情况下,我希望 JFrame 全屏显示,但当我使用 pack() 而不是 setSize() 时,我可以使用使 JFrame 更大的解决方案。

如何在全屏 JFrame 中展开网格或如何使 pack() 更大?

我构建 JFrame 的方法代码:

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);

}

最佳答案

How do I either unsquish the grids in full screen JFrame or how do I make pack() bigger?

您需要实现 Cell 组件的 getPreferredSize() 方法来返回单元格的大小。然后,当您打包框架时,单元格将以首选尺寸显示。

ideally want the JFrame to be full screen so I setSize(2000,2000).

(2000, 2000) 的大小没有意义。我不知道有什么方形屏幕。无论如何,不​​要为此使用 setSize()。相反,当您想要全屏框架时,您可以使用:

frame.setExtendedState(JFrame.MAXIMIZED_BOTH);

关于java - JFrame/JPanel 中的 GridLayout 被挤压在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47736062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com