网格组布局

网格组布局

代码如下(示例):



import java.awt.*;

import javax.swing.*;

public class Demo1 {
	
	JFrame f = new JFrame();  //主窗体
	Container  c;//主容器
	
	void createFrame() {
		c = f.getContentPane();  //取出主容器
		c.setLayout(new GridBagLayout()); //网格布局
		f.setSize(800,600); //大小
		f.setLocationRelativeTo(null); //居中
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭规则
	}
	
	void init() { 
		//约束条件
		GridBagConstraints g1 = new GridBagConstraints();
		g1.gridx = 0;
		g1.gridy = 0;
		c.add(new JButton("组件1"),g1);
		
		GridBagConstraints g2 = new GridBagConstraints();
		g2.gridx = 1;
		g2.gridy = 1;
		c.add(new JButton("组件2"),g2);
		GridBagConstraints g3= new GridBagConstraints();
		g3.gridx = 3;
		g3.gridy = 3;  //因为没有组件所以显示会隐藏
		c.add(new JButton("组件3"),g3);
		
	}
	
	void createButton() {
		for(int i = 0; i<9;i++) {
			//设置长
			GridBagConstraints g1 = new GridBagConstraints();
			g1.gridx = i;
			g1.gridy = 0;
			c.add(new Button("组件"),g1);
			//设置宽
			GridBagConstraints g2 = new GridBagConstraints();
			g2.gridx = 0;
			g2.gridy = i;
			c.add(new Button("组件"),g2);
		}
		
		
	}
	void init2() {
		GridBagConstraints g1 = new GridBagConstraints();
		g1.gridx = 1;
		g1.gridy = 1;
		c.add(new JButton("组件1"),g1);
		
		GridBagConstraints g2 = new GridBagConstraints();
		g2.gridx = 2;
		g2.gridy = 2;
		g2.gridwidth = 2; //占两列
		g2.gridheight = 1;  //占一行
		c.add(new JButton("组件2"),g2);
		
		GridBagConstraints g3= new GridBagConstraints();
		g3.gridx = 4;
		g3.gridy = 3;  
		g3.gridheight = 2;
		g3.gridwidth = 2;
		c.add(new JButton("组件3"),g3);
	}
	
	void init3() {
		 //居中无填充
		GridBagConstraints g1 = new GridBagConstraints();
		g1.gridx =1;
		g1.gridy = 1;
		g1.gridwidth = 2; 
		g1.gridheight = 2;  
		c.add(new JButton("none"),g1); //居中填充
		
		GridBagConstraints g2 = new GridBagConstraints();
		g2.gridx = 3;
		g2.gridy = 1;
		g2.gridwidth = 2; 
		g2.gridheight = 2;  
		g2.fill = GridBagConstraints.HORIZONTAL;  //类常量
		c.add(new JButton("HORIZONTAL"),g2); //水平填充
		
		GridBagConstraints g3= new GridBagConstraints();
		g3.gridx = 4;
		g3.gridy = 3;  
		g3.gridheight = 2;
		g3.gridwidth = 2;
		g3.fill = GridBagConstraints.VERTICAL;  //垂直填充
		c.add(new JButton("VERTICAL"),g3);
		
		GridBagConstraints g4= new GridBagConstraints();
		g4.gridx = 5;
		g4.gridy = 1;  
		g4.gridheight = 2;
		g4.gridwidth = 2;
		g4.fill = GridBagConstraints.BOTH;  //全部填充
		c.add(new JButton("BOTH"),g4);//标签的名字
	}
	void init4() {
		GridBagConstraints g1 = new GridBagConstraints();
		g1.gridx =1;
		g1.gridy = 1;
		g1.gridwidth = 2; 
		g1.gridheight = 2;  
		g1.anchor = GridBagConstraints.NORTH;  //改成北
		c.add(new JButton("@"),g1); 
		
		g1.fill = GridBagConstraints.BOTH; //全填充
		g1.anchor = GridBagConstraints.CENTER;//居中显示
		JPanel p = new JPanel(); //设置面板
		p.setBackground(Color.green);
		c.add(p,g1);
		                         
	}
	void init5() {
		GridBagConstraints g1 = new GridBagConstraints();
		g1.gridx =1;
		g1.gridy = 1;
		g1.insets=new Insets(5,5,5,10);
		c.add(new JButton("@"),g1); 
	}
	void init6() {
		GridBagConstraints g1 = new GridBagConstraints();
		g1.gridx = 2;
		g1.gridy = 2;
		g1.gridwidth = 10;
		g1.gridheight = 10;
		c.add(new JButton("组件"),g1);
		
		GridBagConstraints g2 = new GridBagConstraints();
		g2.gridx = 4;
		g2.gridy = 2;
		g2.gridwidth = -10; 
		g2.gridheight = -10;  
		c.add(new JButton("组件"),g2);
	}
	void init7() {
		GridBagConstraints g1 = new GridBagConstraints();
		g1.gridx = 2;
		g1.gridy = 2;
		g1.weightx = 10;
		g1.weighty = 10;
		c.add(new JButton("组件"),g1);
	}
	public static void main(String[] args){
		Demo1 d = new Demo1();
		d.createFrame();
		d.createButton();
    //	d.init();
	//	d.init2();
	//	d.init3();
	//	d.init4();
	//	d.init5();
	//	d.init6();
		d.init7();//随着缩小缩小
		d.f.setVisible(true);
		
}
}


总结

gridx,gridy 组件所在位置
gridwith ,gridweight 组件占用的行数和列数
anchor 组件所在的方位
fill 组件的填充方式
insets 组件与单元格边缘的最小距离
ipadx , ipady 组件的首先大小
weightx,weighty 一个单元格的最大宽高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值