【问题标题】:JButtons on GridLayout - MineSweeperGridLayout 上的 JButtons - MineSweeper
【发布时间】:2012-11-19 06:08:57
【问题描述】:

我正在编写 MineSweeper 并在 GridLayout 上使用 JButtons。行数和列数由用户输入,因此设置固定大小可能会导致几个问题。

如何在不设置面板固定大小的情况下去除按钮之间的空间?

【问题讨论】:

  • 最好使用 GridbagLayout,这将为您提供自定义 UI 所需的所有选项,例如设置权重等。
  • 1) 通常使用GridLayout 无间距和pack() 在框架上实现。 2) 为了尽快获得更好的帮助,请发帖SSCCE

标签: java swing jbutton layout-manager grid-layout


【解决方案1】:

JButton 的问题似乎比GridLayout 的问题更大

在这里,我将JButton 替换为JPanel(以及一些边框魔法)

我尝试的另一件事是将负 h/vgap 传递给 GridLayout

但我不建议这样做,因为它可能会对其他平台产生无法预料的影响。

我个人很想使用自定义JLabel(附加了自己的鼠标监听器)来代替按钮。您甚至可以在单击它时触发和操作事件...

【讨论】:

  • “这似乎是 JButton 的更多问题” 我不这么认为。 This answer 展示了如何使用 4 个图标作为按钮(5 个作为标签)。在它们之间没有空格的 UI 中。
  • @AndrewThompson 有的按钮,有边框偏移,所以外边缘和默认边框之间有空间,所以按钮之间的空白实际上是内部间距。去掉边框,你可能可以解决空白问题 - 至少在我的测试中
【解决方案2】:

创建gridlayout实例时需要将hgap和vgap设置为0。

喜欢,

   GridLayout myLayout = new GridLayout(0,2,0,0);

【讨论】:

  • new GridLayout(0,2); 会得到相同的结果。 0 是默认值。 ;)
  • 谢谢。我认为它有帮助:)
猜你喜欢
  • 2015-07-18
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多