GridBagLayout

1. 首先,建layout对象,panel设置为该layout:

 

GridBagLayout gbl = new GridBagLayout();
panel.setLayout(gbl);
 

 

 

2.设置列和行的参数(数组有多少个元素,也表明了有多少列和行了):

 

gbl.columnWidths = new int[]{0, 0, 0, 0}; //最小列宽度
gbl.rowHeights = new int[]{0, 0, 0, 0, 0}; //最小行高度

 

下面是对权重的赋值,权重为1,则随着窗口的大小变化而等比例变化,为0,则该单元格大小不变

gbl.columnWeights = new double[]{0.0, 1.0, 1.0, Double.MIN_VALUE}; 
gbl.rowWeights = new double[]{1.0, 1.0, 1.0, 0.0, Double.MIN_VALUE};	

 

 

 

3.每个单元格里放一个组件(可以放panel,然后放更多的组件上去),对应一个GridBagConstraints,GridBagConstraints相当于是对这个单元格的描述。实际上是没有单元格这个对象的,只有它的描述。

 

GridBagConstraints gbc = new GridBagConstraints();
panel.add(panel2, gbc);    //在panel中增加一个组件panel2,它所处的单元格的描述就是gbc了
 

因为GridBagConstraints是对单元格的描述,可以想象它怎样去形容一个单元格:(与表格类比)

(1)位置:gridx,gridy

 

gbc.gridx = 0;   
gbc.gridy = 0;

 

(2) 跨度,gridheight,gridwidth

 

gbc.gridheight = 2; //垂直跨2个单元格 
gbc. gridwidth = 2; //水平跨2个单元格

 

(3)fill 当单元格大于组件时,是否向垂直和水平方向扩展:

 

gbc.fill = GridBagConstraints.BOTH; //既向垂直也向水平方向扩展

 

(4)anchor: 当单元格小于组件时,组件应放在单元格的位置,一般是相对位置,也就是你想显示这个组件的哪一部分:

 

gbc.anchor = GridBagConstraints.NORTHWEST; //西北方,也就是左上角了

 

 (5)insets: 组件与单元格边缘之间间距的最小量,分4个方向:上,左,下,右

 

gbc.insets = new Insets(0, 0, 0, 5); //离右边缘最小间距为5
 

 

 

 

 

 

你可能感兴趣的:(GridBagLayout)