GridBagLayout

package GUI;

import java.awt.Button;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

public class MyGridBagConstainer {
	public static void main(String[] args) 
	{ 
		Frame ff = new Frame();  
		GridBagLayout gr = new GridBagLayout();  
		GridBagConstraints gc = new GridBagConstraints();  //创建一个名为gc的约束对象     
		ff.setLayout(gr);    //将容器ff的布局设为GridBagLayout 
		//		创建一组按钮组件 
		Button bb1 = new Button("bb1");  
		Button bb2 = new Button("bb2"); 
		Button bb3 = new Button("bb3");  
		Button bb4 = new Button("bb4"); 
		Button bb5 = new Button("bb5"); 
		Button bb6 = new Button("bb6"); 
		Button bb7 = new Button("bb7");  
		Button bb8 = new Button("bb8");  
		gc.fill =  GridBagConstraints.BOTH;//设置约束的fill参数,该参数表示当组件的大小小于网格单元的大小时在水平和垂直 方向都填充, 
		gc.weightx =11; //设置x方向的加权值为11。
		gc.weighty = 11;//设置y方向的加权值为11。   
		gr.setConstraints(bb1, gc); //将以上gc所设置的约束应用到按钮组件bb1 
		gc.weightx = 22;//设置x方向的加权值为22,如果不设置weightx则以下的组件都将自动应用上面所设置的weightx值11。  
		gr.setConstraints(bb2, gc);   //将以上所设置的约束应用到按钮组件bb2。
	//	gc.weighty=111; //注意如果不注释掉该行,则以后使用gc约束的按钮组件在y方向的加权值将为111,而在前面设置的y方向 的加权值11将失去作用。  
		gc.weightx =33; 
		gc.gridwidth = GridBagConstraints.REMAINDER;//设置gridwidth参数的值为REMAINDER这样在后面使用该约束的组件将是该 行的最后一个组件。
		gr.setConstraints(bb3, gc); 
		//第一行添加了三个按钮组件bb1,bb2,bb3,且这3个按钮的宽度按weightx设置的值11,22,33按 比例设置宽度      
		
		GridBagConstraints gc1 = new GridBagConstraints();//创建第二个约束gc1    
		gc1.fill = GridBagConstraints.BOTH; 
		gc1.weighty = 22;  //将第2行的y方向加权值设为22 
		gr.setConstraints(bb4, gc1);      
		gr.setConstraints(bb5, gc1);  
		gc1.gridwidth = GridBagConstraints.REMAINDER; 
		gr.setConstraints(bb6, gc1); 
		//第二行添加了三个按钮组件bb4,bb5,bb6  
		
		gc1.weighty =33;     
		gc1.gridwidth = GridBagConstraints.REMAINDER; 
		gr.setConstraints(bb7, gc1);
		//第三行添加了一个按钮组件bb7 gc1.weighty=0;
		
		gr.setConstraints(bb8, gc1); 
		//第四行添加了一个按钮组件bb8,bb8并没有添加到bb7的后面,因为bb8使用了bb7前面的 gridwidth参数设置的值,所以bb8也是单独的一行。    
		
		ff.setSize(500, 300);  
		ff.add(bb1); ff.add(bb2);
		ff.add(bb3); 
		ff.add(bb4);
		ff.add(bb5); 
		ff.add(bb6); 
		ff.add(bb7);
		ff.add(bb8);  
		ff.setVisible(true);
	} 
}

package GUI;

import java.awt.Button;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

public class MyGridBagCon {
	public static void main(String[] args)  {//将容器ff的布局设为GridBagLayout   
		Frame ff = new Frame();  
		GridBagLayout gr = new GridBagLayout(); 
		GridBagConstraints gc = new GridBagConstraints(); //创建一个名为gc的约束对象   

		ff.setLayout(gr); 
		//创建一组按钮组件  
		Button bb1 = new Button("bb1");   
		Button bb2 = new Button("bb2");   
		Button bb3 = new Button("bb3");   
		Button bb4 = new Button("bb4");  
		Button bb5 = new Button("bb5");   
		Button bb6 = new Button("bb6");  
		Button bb7 = new Button("bb7");  
		Button bb8 = new Button("bb8");     
		gc.fill = GridBagConstraints.BOTH;  
		gc.weightx = 11;  
		gc.weighty = 11;  
		gr.setConstraints(bb1, gc);  
		
		gc.weightx = 22; 
		gc.gridx = 1; 
		gc.gridy = 1;  //将下一个组件放置在坐标为1,1的位置。  
		gr.setConstraints(bb2, gc);   
		
		gc.weightx = 33;  
		gc.gridx = 2;  
		gc.gridy = 1; //将下一个组件放置在坐标为2,1的位置。  
		gc.insets = new Insets(-10, -10, -10, -10); //将下一个组件与网格单元的空白区域向外扩展10个像素,在这里可以看到网格包布局允许组件之间重叠。  
		gc.gridwidth = GridBagConstraints.REMAINDER; 
		gr.setConstraints(bb3, gc); 
		
		GridBagConstraints gc1 = new GridBagConstraints();   
		gc1.weighty = 22;  
		gc1.ipadx = 50; 
		gc1.ipady = 50; //将组件的最小尺寸加大ipadx*2个像素。 
		gr.setConstraints(bb4, gc1);  
		gc1.ipadx = 0;   
		gc1.ipady = 0;  //将以后的组件的最小尺寸设置为默认值,如果省掉该行,则以后组件的最小尺寸都会加大ipadx*2个像素。  
		gc1.anchor = GridBagConstraints.NORTHWEST; //将下一个组件bb5的位置放置在单元网格的西北方向。
		gr.setConstraints(bb5, gc1); //因为bb5未设置fill,同时bb5设置了weightx(由gc参数设置)和weighty两个值以确定bb5所在 的网格单元的大小,因而组件bb5的原始最小尺寸无法占据整个网格单元。   
		gc1.fill = GridBagConstraints.BOTH;  
		gc1.gridwidth = GridBagConstraints.REMAINDER; 
		gr.setConstraints(bb6, gc1);    
		gc1.weighty = 33;  
		gc1.insets = new Insets(5, 15,40,150); //使下一个组件bb7与网格单元之间在上,左,下,右,分别保持5,15,40,150个像素的空白位置。  
		gr.setConstraints(bb7, gc1);    
		gc1.weighty = 0; 
		gc1.insets = new Insets(0, 0, 0, 0); //将insets的参数值设为默认值。  
		gr.setConstraints(bb8, gc1);  
		ff.setSize(500, 300);  
		ff.add(bb1);
		ff.add(bb2);  
		ff.add(bb3);  
		ff.add(bb4); 
		ff.add(bb5); 
		ff.add(bb6); 
		ff.add(bb7);  
		ff.add(bb8);  
		ff.setVisible(true);}
} 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值