Java开发GUI之GridBagLayout布局

简介: Java开发GUI之GridBagLayout布局

GridBagLayout布局管理器是比GridLayout布局更加强大的表格布局。GridLayout进行的表格布局其中元素尺寸相同,而GridBagLayout则可以灵活配置其中元素的尺寸和位置。同样,GridBagLayout的使用也更加复杂,其布局依赖GridBagConstraints类。


   先看如下经典示例:


static void GridBagLayoutTest(){

 Frame frame = new Frame("GridBag");

 GridBagLayout layout = new GridBagLayout();

 GridBagConstraints constraints = new GridBagConstraints();

 Panel pannel = new Panel(layout);

 constraints.fill = GridBagConstraints.BOTH;

 constraints.weightx = 1.0;

 Button button1 = new Button("Button1");

 layout.setConstraints(button1, constraints);

 pannel.add(button1);

 Button button2 = new Button("Button2");

 layout.setConstraints(button2, constraints);

 pannel.add(button2);

 Button button3 = new Button("Button3");

 layout.setConstraints(button3, constraints);

 pannel.add(button3);

 constraints.gridwidth = GridBagConstraints.REMAINDER;

 Button button4 = new Button("Button4");

 layout.setConstraints(button4, constraints);

 pannel.add(button4);

 constraints.weightx=0;

 Button button5 = new Button("Button5");

 layout.setConstraints(button5, constraints);

 pannel.add(button5);

 constraints.gridwidth = GridBagConstraints.RELATIVE;

 Button button6 = new Button("Button6");

 layout.setConstraints(button6, constraints);

 pannel.add(button6);

 constraints.gridwidth = GridBagConstraints.REMAINDER;

 Button button7 = new Button("Button7");

 layout.setConstraints(button7, constraints);

 pannel.add(button7);

 constraints.gridwidth=1;

 constraints.gridheight=2;

 constraints.weighty=1.0;

 Button button8 = new Button("Button8");

 layout.setConstraints(button8, constraints);

 pannel.add(button8);

 constraints.weighty=0;

 constraints.gridwidth=GridBagConstraints.REMAINDER;

 constraints.gridheight = 1;

 Button button9 = new Button("Button9");

 layout.setConstraints(button9, constraints);

 pannel.add(button9);

 Button button10 = new Button("Button10");

 layout.setConstraints(button10, constraints);

 pannel.add(button10);

 frame.add(pannel);

 frame.pack();

 frame.show();

}

上面代码布局了10个按钮,其中复用了同一个GridBagConstraints对象,效果如下:

image.png



GridBagLayout类中常用方法列举如下:


//构造方法

public GridBagLayout ();

//设置组件的布局

public void setConstraints(Component comp, GridBagConstraints constraints);

//获取某个组件的布局对象

public GridBagConstraints getConstraints(Component comp);

//获取布局原点

public Point getLayoutOrigin ();

在GridBagLayout中其着至关重要作用的类是GridBagConstraints布局类,其精确确定每个子组件的位置和尺寸信息。下面我们来一点点介绍这个类中属性的意义:


fill:这个属性确定当被布局组件尺寸小于其被指定的表格尺寸时,组件的拉伸模式,可选值定义在GridBagConstraints类中,如下:


//不进行尺寸处理 默认居中

public static final int NONE = 0;

//水平和竖直均拉伸到充满

public static final int BOTH = 1;

//水平方向拉伸充满

public static final int HORIZONTAL = 2;

//竖直方向拉伸充满

public static final int VERTICAL = 3;

anchor:这个属性确定当被布局组件尺寸小于其被指定的表格尺寸时,组件的布局位置,可选值如下:


//居中

public static final int CENTER = 10;

//布局在上方

public static final int NORTH = 11;

//布局在右上方

public static final int NORTHEAST = 12;

//布局在右方

public static final int EAST = 13;

//布局在右下方

public static final int SOUTHEAST = 14;

//布局在下方

public static final int SOUTH = 15;

//布局在左下方

public static final int SOUTHWEST = 16;

//布局在左方

public static final int WEST = 17;

//布局在左上方

public static final int NORTHWEST = 18;

gridwidth与gridheight:这两个属性分别设置组件的宽度与高度,他们可以设置为固定的数值,也可以设置为下面几个特殊的值来表示特殊的意义:


//占据其他组件布局后余下的尺寸

public static final int RELATIVE = -1;

//暂居此行或者此列的剩下全部,后置的组件另起一行或一列

public static final int REMAINDER = 0;

gridx与gridy:这两个值设置组件布局左上角所在的单元格,单位为单元格,默认会排列在上一个单元格之后。


weightx与weighty:这两个值设置组件布局的水平权重和竖直权重。


insets:设置组件边距。

目录
相关文章
|
1天前
|
存储 安全 Java
基于Java的区块链数字身份认证系统设计与开发
基于Java的区块链数字身份认证系统设计与开发
|
23小时前
|
前端开发 Java 开发工具
Java GUI编程:跨平台应用的设计与开发
Java GUI编程:跨平台应用的设计与开发
|
1天前
|
自然语言处理 Java
Java中的行为驱动开发(BDD)实践
Java中的行为驱动开发(BDD)实践
|
1天前
|
设计模式 Java 测试技术
Java后端开发的最佳工程实践与规范
Java后端开发的最佳工程实践与规范
|
1天前
|
自然语言处理 Java 测试技术
Java中的行为驱动开发(BDD)方法论解析
Java中的行为驱动开发(BDD)方法论解析
|
1天前
|
Java 应用服务中间件 API
如何安装与使用Java EE 8、Servlet 3.0及Apache Maven进行高效开发
搭建高效Java EE 8开发环境,包括安装JDK、选择WildFly或Payara Server作为应用服务器,以及安装Apache Maven。使用Maven创建Servlet 3.0 Web项目,编写 HelloWorldServlet,打包部署到服务器,通过访问特定URL测试应用。这一流程助力开发者实现快速原型和大型项目开发。【7月更文第1天】
40 0
|
1天前
|
Java 数据安全/隐私保护 容器
Java详解:GUI容器组件 | 功能组件
Java详解:GUI容器组件 | 功能组件
|
Java 开发工具 git
Java开发初级6.24.3
5.在Git使用过程中,进行Git配置的操作命令是哪个() A. config B. config -g C. config -a D. git config 相关知识点: 在git中,经常使用git config 命令用来配置git的配置文件,git配置级别主要有:仓库级别 local 【优先级最高】、用户级别 global【优先级次之】、系统级别 system【优先级最低】 正确答案:D 10.RDBMS是什么? A. Rela Database Management Systems B. Relational Database Management Systems C. Relation
112 0
|
SQL 前端开发 JavaScript
Java开发初级6.24.2
3.Java网站src/main/java目录保存的是什么资源? A. Java源代码文件 B. 测试代码 C. JavaScript、CSS等文件 D. 图片资源 正确答案:A 4.什么是索引Index? A. SQL数据库里的表管理工具 B. SQL数据库里的查询工具 C. SQL数据库里的目录工具 D. SQL数据库用来加速数据查询的特殊的数据结构 正确答案:D
118 0
|
Java
Java开发初级6.24.1
1.下面关于泛型的描述中错误的一项是? A. “? extends 类”表示设置泛型上限 B. “? super 类”表示设置泛型下限 C. 利用“?”通配符可以接收全部的泛型类型实例,但却不可修改泛型属性内容 D. 如果类在定义时使用了泛型,则在实例化类对象时需要设置相应的泛型类型,否则程序将无法编译通过 相关知识点: https://edu.aliyun.com/course/35 正确答案:D 2.下列选项中属于SVN中控制鉴权用户访问版本库的权限默认权限的是() A. write B. read C. none D. null 相关知识点: auth-access:取值范围为"writ
210 0