如何正确地让 GridLayout 产生指定的行数和列数? (创建棋盘)
How to correctly have GridLayout produce the number of rows and columns specified? (Creating a checkerboard)
我正在使用 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 & 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
一旦你解决了上面的问题,它就会成为新的问题。我的原始评论解决了这个问题。问题是您确定如何为面板着色的逻辑。