gpt4 book ai didi

java - 如何正确让 GridLayout 生成指定的行数和列数? (创建棋盘)

转载 作者:行者123 更新时间:2023-12-02 10:04:24 27 4
gpt4 key购买 nike

我正在使用 Java 和 Swing 创建一个棋盘游戏。为了制作棋盘格,我在 JFrame 中使用 GridLayout。输出显示不正确。我得到的是 9 列和 7 行 + 一个带有 2 个正方形的额外行。交替颜色有效。

我已指定行数和列数(8x8,就像真正的棋盘),并使用 for 循环将 JPanel 添加到 JFrame(具有交替颜色)。我已经尝试过循环的迭代次数和网格的大小,但到目前为止还没有奏效。

相关方法:

private void createBoard() {
f = new JFrame("Checkers");

for (int i = 0; i <= 64; i++) {
JPanel panel = new JPanel();
if (i % 2 == 0) {
panel.setBackground(Color.LIGHT_GRAY);
} else {
panel.setBackground(Color.DARK_GRAY);
}
f.add(panel);
}

f.setLayout(new GridLayout(8,8));
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setSize(windowSize, windowSize);
f.setVisible(true);
}

我期望此方法创建一个充满 64 个面板的 JFrame(8 行和 8 列组成一个方形框架),每个面板都有一种替代颜色。

最佳答案

for (int i = 0; i <= 64; i++) {

您要添加 65 个面板。

代码应该是:

for (int i = 0; i < 64; i++) {

GridLayout 构造函数无法按您的预期工作:

f.setLayout(new GridLayout(8,8));

代码应该是:

f.setLayout(new GridLayout(0,8));

现在,当组件到达第 8 列时,它们将自动换行,添加所需的行数。

此外,通常您会在添加组件之前设置面板的布局。对于 GridLayout 来说这并不重要,但这是一个好习惯。

The colors are not the problem

一旦你解决了上述问题,它就会成为新的问题。我原来的评论解决了这个问题。问题在于您确定如何为面板着色的逻辑。

关于java - 如何正确让 GridLayout 生成指定的行数和列数? (创建棋盘),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55405328/

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