使用 GridLayout 时,是否可以将组件添加到特定的网格单元?
2022-09-01 12:54:06
当我将GridLayout设置为JPanel,然后添加一些东西时,它随后以“文本顺序”添加(从左到右,从上到下)。但是我想向特定单元格添加一个元素(在j列的第i行中)。可能吗?
当我将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,HorizontalGap,VerticalGap)
(new GridLayout(2,2,1,1)) =>这里我想要2行,2列,
- 如果有任何水平间隙(HGap),它们应该是1px(1单位)
- 我也希望垂直间隙相同,所以我与垂直间隙(VGap)相同。即1个单位
- 在这种情况下;间隙 =>间距/边距/填充 --从这个意义上说。
创建组件并将其添加到面板
- (组件,0,0) = > 0,0 是行和列。(像2d数组)。@row 0 和 @column 0 或行 0 和列 0
的交集处,通过将行和列放在它应该去的地方来指定组件的去向。
每个单元格都有一个位置 == [行][列]
或者你可以在没有hgaps和vgaps的情况下做到这一点:
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,2));
JButton component= new JButton("Component");
panel.add(component, 0,0 );