概述


  • GridBagLayout(网格包布局管理器)是在网格基础上提供复杂的布局,是最灵活、 最复杂的布局管理器。GridBagLayout 不需要组件的尺寸一致,允许组件扩展到多行多列。每个 GridBagLayout 对象都维护了一组动态的矩形网格单元,每个组件占一个或多个单元,所占有的网格单元称为组件的显示区域。
  • GridBagLayout 所管理的每个组件都与一个 GridBagConstraints 约束类的对象相关。这个约束类对象指定了组件的显示区域在网格中的位置,以及在其显示区域中应该如何摆放组件。除了组件的约束对象,GridBagLayout 还要考虑每个组件的最小和首选尺寸,以确定组件的大小。

GridBagConstraints


为了有效地利用网格包布局管理器,在向容器中添加组件时,必须定制某些组件的相关约束对象,GridBagConstraints。GridBagConstraints 对象的定制是通过下列变量实现的。

1.gridx 和 gridy

  • 用来指定组件左上角在网格中的行和列。容器中最左边列的 gridx 为 0,最上边行的 gridy 为 0。这两个变量的默认值是GridBagConstraints.RELATIVE,表示对应的组件将放在前一个组件的右边或下面。

2.gridwidth 和 gridheight

  • 用来指定组件显示区域所占的列数和行数,以网格单元而不是像素为单位,默认值为 1。

3.fill

  • 指定组件填充网格的方式,可以是如下值:GridBagConstraints.NONE(默认值)、GridBagConstraints.HORIZONTAL(组件横向充满显示区域,但是不改变组件高度)、GridBagConstraints.VERTICAL(组件纵向充满显示区域,但是不改变组件宽度)以及 GridBagConstraints.BOTH(组件横向、纵向充满其显示区域)。

4.ipadx 和 ipady

  • 指定组件显示区域的内部填充,即在组件最小尺寸之外需要附加的像素数,默认值为 0。

5.insets

  • 指定组件显示区域的外部填充,即组件与其显示区域边缘之间的空间, 默认组件没有外部填充。

6.anchor

  • 指定组件在显示区域中的摆放位置。可选值有 GridBagConstraints.CENTER(默认值)、GridBagConstraints.NORTH、GridBagConstraints.NORTHEAST、GridBagConstraints.EAST、GridBagConstraints.SOUTH、GridBagConstraints.SOUTHEAST、GridBagConstraints.WEST、GridBagConstraints.SOUTHWEST 以及 GridBagConstraints.NORTHWEST。

7.weightx 和 weighty

  • 用来指定在容器大小改变时,增加或减少的空间如何在组件间分配,默认值为 0,即所有的组件将聚拢在容器的中心,多余的空间将放在容器边缘与网格单元之间。weightx 和 weighty 的取值一般在 0.0 与 1.0 之间,数值大表明组件所在的行或者列将获得更多的空间。

代码举例


//框体网格布局设置this.setLayout(new GridBagLayout());//设置网格包布局管理器where = new JTextField();//创建单行文本字段GridBagConstraints gbc = new GridBagConstraints();//如何放置,是否扩展等都靠GridBagConstraints创建对象来指定,即定制某些组件的相关约束对象gbc.gridx = 0;//网格第一行gbc.gridy = 0;//网格第一列gbc.weightx = 1;//权重是1,可随意设置,十分灵活gbc.fill = GridBagConstraints.HORIZONTAL;//将第一行第一列水平拉伸,往右挤。组件横向充满显示区域,但是不改变组件高度this.add(where,gbc);

Java GridBagLayout(网格包布局管理器)相关推荐

  1. 网格组布局管理器(GridBagLayout)网格包布局管理器

    网格组布局管理器GridBagLayout(又称为网格包布局管理器),是GridLayout的加强版,它是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件沿垂直.水平或它们的基线对齐.每个Gr ...

  2. java 网格布局管理器,Java使用网格组布局管理器

    package com.han; import java.awt.Container; import java.awt.GridBagConstraints; import java.awt.Grid ...

  3. java 网格包,求大神解答:JAVA网格包布局管理器小程序问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 为什么我在这个程序上加入了一个Container对象就出问题了,求解答,要如何改: package A; import java.awt.*; impor ...

  4. java 网格包布局管理器_java :网格包布局管理器GridBagConstraints的应用

    代码如下:···(略)publicclassApp12_13extendsJFrame{staticApp12_13frm=newApp12_13();staticJLabeljlab=newJLab ...

  5. 【Java】Java中GUI之布局管理器

    [概念] 布局管理器:是对容器中的元素进行布局管理,按照一定的规则将容器里面的元素或组件进行排放. [分类] 1.FlowLayout:流式布局管理器 2.BorderLayout:边框布局管理器 3 ...

  6. 【Java AWT 图形界面编程】LayoutManager 布局管理器 ④ ( GridLayout 网格布局 | GridBagLayout 网格包布局 )

    文章目录 一.GridLayout 网格布局 二.GridLayout 构造函数 三.GridLayout 网格布局代码示例 四.GridBagLayout 网格包布局 一.GridLayout 网格 ...

  7. GridBagConstraints(网格组布局管理器的使用)

    GridBagConstraints特征: 由GridBagConstraints类实现的布局管理器称为网格组布局管理器,它实现了一个动态的矩形网格,这个矩形风格由无数个矩形单元格组成,每个组件可以占 ...

  8. java怎么设置卡片布局_在Java中使用卡片布局管理器的方法

    在Java中使用卡片布局管理器的方法 发布时间:2020-12-03 16:05:18 来源:亿速云 阅读:85 作者:Leah 在Java中使用卡片布局管理器的方法?针对这个问题,这篇文章详细介绍了 ...

  9. java 布局管理器_有时在Java中,一个布局管理器是不够的

    java 布局管理器 在开发Java Swing应用程序时,最经常的是,我们需要在多个嵌套面板中使用多个布局管理器. 这通常不是问题,被认为是几乎所有人类已知语言的所有UI开发的常规做法. 但是,大多 ...

最新文章

  1. 后台获取视图对应的字符串
  2. HLSL Texture Object Sample 的一些笔记
  3. 【收藏】win10利用WSL2安装docker的2种方式
  4. Android的配置界面PreferenceActivity
  5. Please ensure that adb is correctly located at……问题解决方案
  6. 同学之间互相出的一些有趣题目
  7. 安装electron-react-boilerplate遇到的问题
  8. 服务器系统安装及部署pdf,服务器操作系统安装说明.pdf
  9. 《Storm实时数据处理》一导读
  10. 〖强暴贴〗号称全国最大开发者网络的CSDN多次出现低级错误 验证码形同虚设 开发人员竟是MVP
  11. MARIADB数据库服务器
  12. 通过vdi备份linux,Linux_Ubuntu下VirtualBox的vdi文件克隆方法,使用VirtualBox时遇到一个问题, - phpStudy...
  13. ViewFlipper和ViewPager的区别
  14. 表的自然连接(数据结构链表链接)
  15. 台达 PLC 浮点数 乘法和除法
  16. 极空间家庭私有云,您的数字资产大管家
  17. CORDIC算法详解(一)- CORDIC 算法之圆周系统之旋转模式( Rotation Mode )
  18. 德力捷读码器-Matrix 320 ID-NET-软件设置教程
  19. 混凝土静力受压弹性模量试验计算公式_谈混凝土静力受压弹性模量
  20. Ubuntu18.04 :cubeMx + vscode+stLink 踩坑

热门文章

  1. 安卓adb工具的安装方法
  2. TinyOS 学习第一周-Ubuntu-10.10下安装TinyOS-2.1.1
  3. locked肆虐,不少人已经中招-是否也有你
  4. 创建新Docker容器时出现“The container name “/xxx“ is already in use by container xxxxxxxxxxx...”问题的解决办法
  5. 图像的Blob分析--连通域分析
  6. Mysql之using用法
  7. ORACLE 年龄计算到月份
  8. java i=i++和j=i++的区别
  9. MarkDown语法详解:标题、字体、列表、引用、图片、表格、代码、超链接、公式
  10. python爬虫——Request之get请求和post请求