Java 网格布局忽略了间隙



我正在用java做一个跳棋板。但我有一个奇怪的问题:即使我把 vgap 设置为 0,它仍然会创建一个 vgap。在高度的正方形之间有一个 aprox 5px 的空间。宽度还可以。这是我的 Diagram 对象的布局代码:

this.setLayout(new GridLayout(10, 10, 0, 0));
this.setPreferredSize(new Dimension(230, 230));

这就是我实现图的地方:

// The jpanel that has to contain the diagram
jpanel.setLayout(new FlowLayout());
add(jpanel, BorderLayout.WEST);
// The placement of the diagram in that jpanel
jp.add(new diagram());

这是它的外观:

[][][][][][][][][]
<The spacing that I have to get removed>
[][][][][][][][][]

但它应该是这样的:

[][][][][][][][][]
[][][][][][][][][]
^
|
no spacing between them
  • 您必须将 JPanel 的LayoutManager从 FlowLayout 更改为 BorderLayout 或...,

  • FlowLayout相当接受PreferredSize来自将JCompoments放入容器(JPanel),一切都取决于

    1. Diagram返回PreferredSize

    2. 如果以及如何使用容器调整大小Diagram

    3. 如何以及在何处真正使用网格布局

  • 为了更好的帮助,尽快发布SSCCE

我通过将图像加载到 JPanel 而不是 JLabel 中来解决此问题我把图像制作成缓冲图像然后用绘图图像将其绘制到JPanel上

最新更新