在Java中为GridLayout创建单元格

在Java中为GridLayout创建单元格,java,layout,grid,grid-layout,Java,Layout,Grid,Grid Layout,我正试图用java为我的蛇和梯子游戏创建一个网格,但我有一个小问题,在我创建的网格中有一个不需要的空间 有人知道我怎样才能摆脱它吗 这是我为客户端(client.java)编写的代码: 我看不到你的图像,但我怀疑你有布局问题。顺便问一下,你的手机是否扩展了JPanel?您是设置其布局管理器还是使用默认的FlowLayout 考虑: 您不应该在游戏板上调用setPreferredSize(…),因为这会指示网格单元的大小,因为网格单元太大了 相反,细胞本身应该控制自身和整个网格的大小 考虑让单

我正试图用java为我的蛇和梯子游戏创建一个网格,但我有一个小问题,在我创建的网格中有一个不需要的空间

有人知道我怎样才能摆脱它吗

这是我为客户端(client.java)编写的代码:


我看不到你的图像,但我怀疑你有布局问题。顺便问一下,你的手机是否扩展了JPanel?您是设置其布局管理器还是使用默认的FlowLayout

考虑:

  • 您不应该在游戏板上调用
    setPreferredSize(…)
    ,因为这会指示网格单元的大小,因为网格单元太大了
  • 相反,细胞本身应该控制自身和整个网格的大小
  • 考虑让单元格覆盖
    getPreferredSize()
    并返回JLabel图像的维度(如果存在),或者返回super的结果
  • 确保在添加所有组件后并将其设置为可见之前,在顶级窗口上调用
    pack()
  • 考虑让单元格使用BorderLayout,并将JLabel添加到BorderLayout.CENTER位置,以便它填充单元格(如果您希望它这样做的话)

<对于更多的帮助和更好的帮助,考虑创建和发布.

你的第一个问题在这里…

GridLayout GameBoard = new GridLayout(10, 10, 1, 1); //Create GridLayout
正如JavaDocs中所描述的

公共网格布局(整数行,
整数列,
int hgap,
int vgap)

创建具有指定行数和列数的栅格布局。 布局中的所有组件大小相同。

此外,水平和垂直间隙设置为指定的间隙 价值观水平间隙放置在每根柱之间。 垂直间隙位于每行之间。

行和列的一个(但不是两个)可以为零,这意味着 可以将多个对象放置在一行或一列中。

这意味着,您通过向
hgap
vgap
参数提供非零值来提供间隙

如果你用了像

GridLayout GameBoard = new GridLayout(10, 10); //Create GridLayout             
你最终会得到像

GridLayout GameBoard = new GridLayout(10, 10); //Create GridLayout             


如前所述,我将避免使用
GameArea.setPreferredSize(新维度(590560))
并替代
getPreferredSize
方法来覆盖
单元格
类。由于
GridLayout
的工作方式,这不会阻止单元格的大小调整,但无论如何这可能是可取的…

谢谢,我已经做了“满是鳗鱼的气垫船”所建议的更改,还稍微调整了布局并使其正常工作。我没有扩展JPanel,而是用JButton替换了它,不知怎么的,它工作得很好。谢谢你的帮助和指导
GridLayout GameBoard = new GridLayout(10, 10); //Create GridLayout