全国
Java--教育路上

栏目导航

全国站 > Java > 图形界面
需求

java布局管理GridBagLayout

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

标签:
发布时间:
2024-04-20 00:31
信息来源:
网络推荐
浏览次数:
1720
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
相关推荐
最近更新
学校免费发布信息关闭
如有图片请发邮件到:edu63@foxmail.com,审核后显示

 换一张

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


 换一张

确认提交