教育路上

全国站>Java>图形界面>java布局管理GridBagLayout
学员需求

java布局管理GridBagLayout

摘要:java布局管理GridBagLayout,GridBaglayou(网格包布局管理器) 是最灵活、最复杂的布局管理器。与 GridLayout 布局管理器类似,不同的是,它允许网格中的组件大小各不相同,而且允许一个组件跨越一个或者多个网格。。以下是我们为大家整理的,相信大家阅读完后肯定有了自己的选择吧。

2022-07-07 20:24网络推荐

发布时间:
2022-07-07 20:24
信息来源:
网络推荐
浏览次数:
1682
java布局管理GridBagLayout

GridBaglayou(网格包布局管理器) 是最灵活、最复杂的布局管理器。与 GridLayout 布局管

理器类似,不同的是,它允许网格中的组件大小各不相同,而且允许一个组件跨越一个或者多个

网格。

使用 GridBaglLayout 布局管理器的步骤如下:

(1) 创建 GridBagLayout 布局管理器,,并使容器采用该布局管理器

GridBagLayout layout=new GridBagLayout();

container.setLayout(layout);

(2) 创建 GridBagContraints 对象(布局约束条件).并设置该对象的相关属性

GridBagConstraints constraints=new GridBagConstraints();

constraints.gridx=1; //设置网格左上角横向索引

constraints.gridy=1; //设置网格左上角纵向索引

constraints.gridwidth=1; //设置组件横向跨越网格

constraints.gridheight=1; //设置组件纵向跨越网格

(3) 调用 GridBagLayout 对象的 setConstraints ()方法建立 GridBagConstraints 对象和受控

组件之间的关联

Layout.setConstraints(component,constraints);

(4) 向容器中添加组件

container.add(conponent);

GridBagConstraints 对象可以重复使用,只需要改变它的属性即可。如果要向容器

中添加多个组件,则重复(2).(3).(4)步骤。

从上面的步骤可以看出,使用 GridBagLayout 布局管理器的关键在于

GridBagConstraints 对象,它才是控制容器中每个组件布局的核心类,在

GridBagConstraints 中有很多表示约束的属性,下面对 GridBagConstraints 类的一些常

用属性进行介绍,如表 11-3 所示。

from shengerguan

from shengerguan

表 11-3 中,列出了 GridBagConstraints 的常用属性,其中,gridx 和 gridy 用于设置

组件左上角所在网格的横向和纵向索引,gridwidth 和 gridheight 用于设置组件横向、纵

向跨越几个网格,fill 用于设置是否及如何改变组件大小,weightx 和 weighty 用于设置

组件在容器中的水平方向和垂直方向的权重。

需要注意的是,如果希望组件的大小随着容器的增大而增大,必须同时设置

GridBagConstraints 对象的 fill 属性和 weightx.weighty 属性。

接下来通过一个案例来演示 GridBagLayout 的用法,如例 11-11 所示。

例 11-11 Example11.java;’

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; // 设置组件横向纵向可以拉伸

c.weightx = 1; // 设置横向权重为 1

c.weighty = 1; // 设置纵向权重为 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);

c.weightx = 0; // 设置横向权重为 0

c.weighty = 0; // 设置纵向权重为 0

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; // 设置组件横向跨一个网格

c.weightx = 2; // 设置横向权重为 2

c.weighty = 2; // 设置纵向权重为 2

this.addComponent("btn8", layout, c);

c.gridwidth = GridBagConstraints.REMAINDER;

c.gridheight = 1;

this.addComponent("btn11", layout, c);

this.addComponent("btn10", layout, c);

this.pack();

this.setVisible(true);

}

// 增加组件的方法

private void addComponent(String name, GridBagLayout layout,

GridBagConstraints c) {

Button bt = new Button(name); // 创建一个名为 name 的按钮

layout.setConstraints(bt, c); // 设置 GridBagConstraints 对象和按钮的关联

this.add(bt); // 增加按钮

}

}

public class Example11 {

public static void main(String[] args) {

new Layout("GridBagLayout");

}

}

编译运行程序,生成的窗口如图 11-20 所示。

from shengerguan

图 11-20 例 11-11 运行结果

例 11-11 中,向 GridBagLayout 布局管理器中添加 10 个按钮。由于每次添加组件的时候都

需要调用该布局的 setConstraints( )方法,将 GridBagConstraints 对象与按钮组件相关联,因此,可

以将这段关联的代码抽取到 addComponent( )方法当中,简化书写。

在添加 button1~ button4 按钮和 button8~ button10 按钮时,都将权重 weightx 和 weighty

的值设置为大于 0,因此在拉伸窗口时,这些按钮都会随着窗口增大,而在添加 button5~button7

按钮时,将权重值设置为 0,这样它们的高度在拉伸时没有变化,但长度受上下组件的影响,还是

会随窗口变大。



上一篇:
java布局管理GridLayout
下一篇:
java布局管理CardLayout
标签:
网友评论
发布评论

访客的评论 2024/03/29 17:08

文中描述的是准确的吗,如何报名!

相关推荐
我也来发表评价关闭
我对该内容的评价:
0
评价500
验证码: 看不清 换一张
提交 (匿名发布,无须担心别人知道您的身份)
学校免费发布信息关闭
我们审核后会尽快展示,如有图片请发邮件到:edu63@foxmail.com

姓      名:

内      容:

手机号码:

验  证  码:  换一张

确认提交
填写需求信息关闭
我们会根据您的需求匹配并审核留言

姓      名:

意向城市:

留      言:

手机号码:

验  证  码:  换一张

确认提交
完善补充本文信息关闭
非常感谢您帮助完善补充本文信息


 换一张

确认提交