Java GUI(图形化界面)------GridBagLayout(网格包布局管理器)

GridBagLayout(网格包布局管理器)

网格包布局管理器与GridLayout布局管理器类似,但是它允许网格中的组件大小各不相同,而且允许一个组件跨越一个或者多个网格。

使用GridBagLayout布局管理器的步骤

  • 创建GridBagLayout布局管理器,并使容器采用该布局管理器。

     GridBagLayout layout=new GridBagLayout();
     container.setLayout(layout);

  • 创建GridBagLayout对象,并设置对象的相关属性

     GridBagConstraints constraints=new GridBagConstraints();
     constraints.gridx=1;//设置网格的左上角横向索引
     constraints.gridy=1;//设置网格的左上角纵向索引
     constraints.gridwidth=1;//设置组件横向跨越的网格
     constraints.gridheight=1;//设置组件的纵向跨越的网格

  • 调用GridBagLayout对象的setConstraints()方法建立GridBagConstraints对象和受控组件之间的关联。

     layout.setConstraints(component,constraints);

  • 向容器中添加组件

     container.add(conponent);

weightx和weighty

设置组件占领容器中多余的水平方向和垂直方向的空白比例(也称为权重)所设置的控件根据增加到像素去给对应的控件按权重增加像素。

 
package AWT;
 import java.awt.*;
 class Layout extends Frame{
     public Layout(String title){
         GridBagLayout layout=new GridBagLayout();
         GridBagConstraints c=new GridBagConstraints();
         this.setLayout(layout);
         //设置横向坐标可以拉伸
         c.fill=GridBagConstraints.BOTH;
         //设置横向,纵向权值为1
         c.weightx=1;
         c.weighty=1;
         this.addComponent("btn1",layout,c);
         this.addComponent("btn2",layout,c);
         this.addComponent("btn3",layout,c);
         //添加本行最后一个组件
         c.gridwidth=GridBagConstraints.REMAINDER;
         this.addComponent("btn4",layout,c);
         //设置横向,纵向权值为0
         c.weightx=0;
         c.weighty=0;
         this.addComponent("btn5",layout,c);
         //设置组件跨一个网格
         c.gridwidth=1;
         this.addComponent("btn6",layout,c);
         //添加的组件是本行最后一个组件
         c.gridwidth=GridBagConstraints.REMAINDER;
         this.addComponent("btn7",layout,c);
         //设置组件纵向跨两个网格,横向跨一个网格
         c.gridheight=2;
         c.gridwidth=1;
         //设置横向,纵向权重为2
         c.weightx=2;
         c.weighty=2;
         this.addComponent("btn8",layout,c);
         c.gridwidth=GridBagConstraints.REMAINDER;
         c.gridheight=1;
         this.addComponent("btn9",layout,c);
         this.addComponent("btn10",layout,c);
         this.setTitle(title);
         this.pack();
         this.setVisible(true);
     }
     private  void addComponent(String name ,GridBagLayout layout,GridBagConstraints c){
         Button bt=new Button(name);
         //设置GridBagConStraints和按钮的关联
         layout.setConstraints(bt,c);
         this.add(bt);
     }
 }
 public class WangGeBao {
     public static void main(String[] args) {
         new Layout("GridBagLayout");
     }
 }

Java GUI(图形化界面)------GridBagLayout(网格包布局管理器)_第1张图片 

 

你可能感兴趣的:(java)