我正在尝试使用GridBagLayout,但是我遇到了一些麻烦。我想使用12行进行布局。因此,首先让两个JPanels填充前两行(gridheight = 1)。然后,我制作另外5个JPanels来填充其他10行(gridheight = 2)。底部的5个JPanel获得gridheight = {2,4,6,8,10},因此它们不会重叠或其他任何东西。
我现在遇到的问题是:
所有的JPanel都具有相同的大小!
我还填写了两种方式,并且不使用任何锚点。如果我添加一个带有gridx = 1,gridy = 0和gridheight = 2的JPanel,那么它的高度将是原来的两倍,那么这有什么用呢?我是否必须事先告知布局系统我将要使用的总行数?如果是这样,我该怎么做?
最佳答案
GridBagLayout(GBL)在很多方面都被首次使用的用户所遗漏。
1)放置在GBL内的组件将以其“首选”大小进行初始化。 iirc的JPanel的首选大小为1x1。
2)如果要根据封闭容器调整GBL单元的大小,则需要给它们一个weightx和weighty。这两个属性的作用是,根据分配的所有权重和权重之比,为单元提供可用面积的百分比。例如如果我有2个像元并且1个像元的权重= 1.0,第二个像元的权重是2.0,那么第一个像元的宽度将是第二个像元的1/2(或者第二个像元的宽度是第二个像元的两倍)。
3)首次潜水时,GBL会经历很多试验和错误,但它是最强大,最灵活和最可靠的布局(尤其是与嵌套布局相比,更容易出错)
关于java - gridheight似乎不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26833913/