在Java中为GridLayout创建单元格
我正试图用java为我的蛇和梯子游戏创建一个网格,但我有一个小问题,在我创建的网格中有一个不需要的空间 有人知道我怎样才能摆脱它吗 这是我为客户端(client.java)编写的代码:在Java中为GridLayout创建单元格,java,layout,grid,grid-layout,Java,Layout,Grid,Grid Layout,我正试图用java为我的蛇和梯子游戏创建一个网格,但我有一个小问题,在我创建的网格中有一个不需要的空间 有人知道我怎样才能摆脱它吗 这是我为客户端(client.java)编写的代码: 我看不到你的图像,但我怀疑你有布局问题。顺便问一下,你的手机是否扩展了JPanel?您是设置其布局管理器还是使用默认的FlowLayout 考虑: 您不应该在游戏板上调用setPreferredSize(…),因为这会指示网格单元的大小,因为网格单元太大了 相反,细胞本身应该控制自身和整个网格的大小 考虑让单
我看不到你的图像,但我怀疑你有布局问题。顺便问一下,你的手机是否扩展了JPanel?您是设置其布局管理器还是使用默认的FlowLayout 考虑:
- 您不应该在游戏板上调用
,因为这会指示网格单元的大小,因为网格单元太大了setPreferredSize(…)
- 相反,细胞本身应该控制自身和整个网格的大小
- 考虑让单元格覆盖
并返回JLabel图像的维度(如果存在),或者返回super的结果getPreferredSize()
- 确保在添加所有组件后并将其设置为可见之前,在顶级窗口上调用
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