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(网格包布局管理器)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31746.html