当前位置: 首页 > 知识库问答 >
问题:

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

洪经义
2023-03-14

我正在用Java创建一个棋盘游戏

我已经指定了行和列的数量(8x8,就像一个真正的棋盘),并使用for循环将JPanels添加到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个面板(8行8列组成一个方形框架)的JFrame,每个面板都是一种交替的颜色。

共有1个答案

司寇书
2023-03-14
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来说,这并不重要,但这是一个很好的习惯。

颜色不是问题

一旦解决了上述问题,它将成为新问题。我最初的评论是针对这个问题的。问题在于确定面板颜色的逻辑

 类似资料:
  • 问题内容: 我试图在Go中生成一个随机字符串,这是我到目前为止编写的代码: 我的执行速度很慢。使用进行播种会在一定时间内带来相同的随机数,因此循环会一次又一次地迭代。如何改善我的代码? 问题答案: 每次设置相同的种子,您将获得相同的序列。因此,当然,如果您将种子设置为快速循环中的时间,则可能会多次调用相同的种子。 在您的情况下,在您调用函数直到拥有不同的值之前,您正在等待时间(由Nano返回)。

  • 问题内容: 我有一个由列表列表组成的Numpy数组,代表带有行标签和列名的二维数组,如下所示: 我希望所得的DataFrame将Row1和Row2作为索引值,并将Col1,Col2作为标头值 我可以指定索引如下: 但是我不确定如何最好地分配列标题。 问题答案: 您需要指定,并以构造函数,如: 编辑 :如@joris注释中所示,您可能需要更改上述内容才能具有正确的数据类型。

  • 我想打印asterix,它等于行数-(它们应该从右侧开始)。它应该在第一行以9个空格和1个空格开始,然后在第二行以2个空格和8个空格开始,依此类推,直到第十行,第十行应该有10个空格和0个空格,如下图所示: 我可以在每行打印正确数量的空格,在正确的位置打印1*。例如,它在第一行打印9个空格和1个*。但在第二行,它会打印8个空格,在第九个位置打印1个*而不是2个?我看不到我在代码中遗漏了什么:

  • 这就是我所拥有的理想构建脚本: 我确实想手动执行任务“unzip_natives_os”。但它似乎只在配置阶段起作用。当我用这个设置进行测试运行时,它会给我一个错误:“java.lang.UnsatifiedLinkError”,但是如果我在dependencies块中将配置从“NativeSos”更改为“RuntimeOnly”,它就能正常工作。我是否必须显式地创建这个“ApplicationD

  • 我正在使用react.js应用程序,我记得我能够用pops将回调函数从一个孩子传递给一个家长,但我无法再次实现这一点(我希望它保持简单,没有通量库): 所以我的父母: 和我的孩子: 无论我尝试什么,我都会得到: 无法在showCirculares读取未定义的属性“props”; 我知道这将通过一个简单的任务解决,这是基本的React.js内容,只是我找不到解决方案!!我做错了什么?