我正在尝试使用 GridBagLayout,但遇到一些问题。我想使用 12 行进行布局。因此,首先我制作两个 JPanel 来填充前两行(gridheight = 1)。然后我制作另外 5 个 JPanel 来填充其他 10 行(网格高度 = 2)。底部 5 个 JPanel 的 gridheight = {2,4,6,8,10},因此它们不会重叠或发生任何情况。
我现在遇到的问题是:
所有 JPanel 的尺寸相同!
我也用两种方式填充,并且不使用任何 anchor 。如果我添加一个 gridx = 1、gridy = 0 和 gridheight = 2 的 JPanel,那么它将具有双倍的高度,那么这里是怎么回事?我是否必须事先告诉布局系统我要使用的总行数?如果是这样我该怎么做?
最佳答案
首次用户会错过 GridBagLayout (GBL) 的几个方面。
1) 放置在 GBL 内的组件将以其“首选”大小进行初始化。 JPanel、iirc 的首选尺寸为 1x1。
2)如果您希望GBL单元格根据封闭容器调整大小,您需要给它们一个weightx和weighty。这两个属性的作用是,根据分配的所有weightx 和weighty 的比率,为单元格提供可用区域的百分比。例如如果我有 2 个单元格,其中 1 个单元格的weightx = 1.0,而第二个单元格的值为 2.0,那么第一个单元格的宽度将是第二个单元格的 1/2(或者第二个单元格的宽度是第二个单元格的两倍)。
3) 当你第一次接触GBL时,GBL需要大量的试验和错误,但它是最强大、最灵活、最可靠的布局(特别是与嵌套布局相比,blech)
关于java - gridheight 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26833913/