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

本文详细介绍了GridBagLayout布局管理器的使用方法,包括如何创建、设置组件属性、关联约束和调整组件大小,以及weightx和weighty的作用。通过实例演示了如何实现组件的自适应和跨格布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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");
     }
 }

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LNORA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值