使用GridLayout时,是否可以将组件添加到特定网格单元?

当我将GridLayout设置为JPanel然后添加内容时,它随后以“文本顺序”(从左到右,从上到下)添加。 但我想在特定单元格中添加一个元素(在第j列的第i行)。 可能吗?

不,您无法在特定单元格中添加组件。 您可以做的是添加空的JPanel对象并在数组中保持对它们的引用,然后以您想要的任何顺序向它们添加组件。

就像是:

int i = 3; int j = 4; JPanel[][] panelHolder = new JPanel[i][j]; setLayout(new GridLayout(i,j)); for(int m = 0; m < i; m++) { for(int n = 0; n < j; n++) { panelHolder[m][n] = new JPanel(); add(panelHolder[m][n]); } } 

然后,您可以直接添加到其中一个JPanel对象:

 panelHolder[2][3].add(new JButton("Foo")); 

  JPanel panel = new JPanel(); panel.setLayout(new GridLayout(2,2,1,1)); JButton component= new JButton("Component"); panel.add(component, 0,0 ); 

创建面板并设置其布局。
新的GridLayout(numberOfRows,numberOfColums,Horizo​​ntalGap,VerticleGap)

(new GridLayout(2,2,1,1))=>这里我想要2行,2列,
– 如果有任何水平间隙(HGap),它们应为1px(1单位)
– 我也想要相同的垂直间隙,所以我做垂直间隙(VGap)。 即1个单位
– 在这种情况下; gap => spacing / margin / padding – 就是这个意义上的。

创建组件并将其添加到面板
– (component,0,0)=> 0,0是行和列..(就像一个2d数组)。
通过将行和列放在应该去的位置来指定组件的位置。
每个单元格都有一个位置== [row] [column]

或者你可以不用hgaps和vgaps来做到这一点:

  JPanel panel = new JPanel(); panel.setLayout(new GridLayout(2,2)); JButton component= new JButton("Component"); panel.add(component, 0,0 );