GridBagLayout布局

Java,Swing用户界面中,使用GridBagLayout布局,可以灵活的放置组件和自定义其随窗口变化的适应性。

首先,如何使用GridBagLayout布局

    GridBagLayout lay=new GridBagLayout();
    GridBagConstraints c=new GridBagConstraints();

     frame.setLayout(lay);//为frame设置布局管理器

    //设置c的各项参数

    lay.setConstraints(panel1, c);//放置组件    

这样,我们调整c的各项参数,就可以将panel1放置在我们想放置的位置了。

常用参数的说明:

说明之前,对于GridBagLayout的布局界面,我们可以想象成一个个大小不一样的格子组成的网格(同一行的格子,一样高,但是不一定一样宽)

但是,仍然把每个格子的长和宽认为是1处理。

组件就被放在格子里面。

fill,组件在所处格子内的填充方式,NONE,VERTICAL,HORIZONTAL,BOTH(c.fill=GridBagConstraints.BOTH;)

anchor,组件在所处格子内的对齐方式,CENTER,NORTH,NORTHEAST,EAST,SOUTHEAST,SOUTH,SOUTHWEST,WEST,NORTHWEST(同上)

ipadx,ipady:内部填充,是指在组件首选大小的基础上x方向上加上ipadx,y方向加上ipady,这样就可以保证组件不会收缩到ipadx,ipady所确定的大小以下(即确定组件大小)

insets,外部填充,填充的区域是组件与所处格子边框之间的部分,有left,top,right,bottom,四个参数(即内边框,c.insets=new Insets(10,10,10,10))

假设你fill参数设置为BOTH(这样下面的有些参数才有意义)

以所设置为GridBagLayout的组件的左上角为零点,x轴水平向右,y轴竖直向下

gridx,gridy:组件所处格子的左上角的坐标(一行二列:1,0)

gridwidth,gridheight:组件在x方向,y方向所占的单元格数(跨两行一列:1,2)

weighx,weighty:两种情况,

1.组件的大小小于格子时,组件需要覆盖这个格子时,weightx和weighty表示,水平和竖直扩展的比例

即,原本即使是正方形,当weightx和weighty不一致时,扩展后也将变成长方形

2.组件已经以一定比例的覆盖在格子上(可以由情况1实现,也可以由ipadx和ipady准确控制),我们拉伸窗口时,水平和竖直扩展的比例

注:取不一样的值,就可以看出效果

如果不是BOTH呢,其实就是weightx和weighty参数的调整,是否需要扩展需要具体考虑

为了简单,通常把这些参数设置,放在一个方法里面,然后调用。

我所遇见的问题:

格子之间存在覆盖,大小和比例不合适,可能会发现有的格子不见了

weighx和weighy参数不清楚具体原理,不过数值统一比较好,我是取1-10,然后慢慢改,再然后就成了...

可能因为组件被放置再一起的原因,许多时候,参数之间会互相影响(weightx和ipadx),这点需要考虑到

单一组件布局会考虑整体布局(设置了方向扩展),有时候,不是你想它在那,它就在那的,也并不是想留空白就留空白的,同样多改改就好。

时间: 2024-10-25 03:33:17

GridBagLayout布局的相关文章

GridBagLayout布局管理器应用详解

http://yyzjava.iteye.com/blog/1181552 很多情况下,我们已经不需要通过编写代码来实现一个应用程序的图形界面,而是通过强大的IDE工具通过拖拽辅以简单的事件处理代码即可很轻松的完成.但是我们不得不面对这样操作存在的一些问题,有时候我们希望能够自由改变一个程序界面的大小,通过托拽生成的界面往往是不提供这个功能的,因为定制的界面一旦改变形状,组件间的布局会变得杂乱无章. Java中的布局管理器应用了策略者模式(Strategy),为不同类型的组件布局提供了很好的模型

Java基础——GridBagLayout布局

1.GridBagLayout布局管理器非常灵活,每个 GridBagLayout 对象维持一个动态的矩形单元网格: 2.需要和它的约束类(GridBagConstraints类)一起使用: 3.GridBagLayout给组件提供了布局的方式:具体约束则有与之关联的GridBagConstraints来实现: 4.通过调用GridBagConstraints的各种约束属性字段来完成一个灵活的布局管理器: 5.网格包布局形象说就是依照左上角为原点,水平向右为x轴正方向,垂直向下为y轴正方向(如下

java Swing布局管理之GridBagLayout布局

GridBagLayout以表格形式布置容器内的组件,将每个组件放置在每个单元格内,而一个单元格可以跨越多个单元格合并成一个单元格,即多个单元格可以组合成一个单元格,从而实现组件的自由布局. GridBagLayout是一个灵活的布局管理器,部件如果想加入其中需借助GridBagConstraints,其中有若干个参数 1.构造方法 GirdBagLayout():建立一个新的GridBagLayout管理器. GridBagConstraints():建立一个新的GridBagConstrai

Java FlowLayout、BorderLayout、GridLayout、GridBagLayout、CardLayout布局管理器

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/40985027 一.FlowLayout布局管理器 FlowLayout() 构造一个新的 FlowLayout,它是居中对齐的,默认的水平和垂直间隙是 5 个单位. FlowLayout(int align) 构造一个新的 FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个单位. FlowLayout(int align, int hgap, int

JavaSE学习55:GUI编程之布局管理器

一布局管理器概述 Java语言中,提供了布局管理器类的对象可以管理. 管理Component对象在Container对象中的布局,不必直接设置Component对象位置和大小.每个Container对象 都有一个布局管理器对象,当容器需要对某个组件进行特定或判断其大小尺寸时,就会调用其对应的布局管理器,调 用Container对象的setLayout()方法改变其布局管理器对象. AWT提供了5种布局管理器,分别为: FlowLayout布局管理器 BorderLayout布局管理器 GridL

swing布局管理器简介

转载:http://stevencjh.blog.163.com/blog/static/1218614612010101775336729/ swing布局管理器简介 一 .BorderLayout布局管理器:BorderLayout 也是一种非常简单的布局策略,它把容器内的空间简单地划分为东.西.南.北.中无个区域,没加入一个组件都应该指明把这个组件加在哪个区域中. BorderLayout是顶层容器( JFrame, JDialog, 和 JApplet )的默认布局管理器.有五个位置组件

【Java Swing探索之路系列】之三:Java Swing布局管理器组件

作者:郭嘉 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 一 BorderLayout BorderLayout是一种简单的布局策略,可以将其看作一个组件.它把容器分为东.南.西.北.中5个区域,每个组件将占据某个区域.而 这5个区域分别被命名为NORTH, WEST, EAST, CENTER, SOUTH,它们都被定义为静态 常量.静态常量可以直接引用,如

Java布局管理器组件

Java布局管理器组件 所谓布局管理器,就是为容器内的组件提供若干布局策略,每个容器都拥有某种默认布局管理器,用于负责其内部组件的排列.目前开发中,常用的布局管理器有BorderLayout.FlowLayout.GridLayout.GridBagLayout.CardLayout.BoxLayout.SpringLayout.GroupLayout等: 布局管理器种类 BorderLayout FlowLayout GridLayout GridBagLayout CardLayout Bo

【java】浅析java组件中的布局管理器

这篇博文笔者介绍一下java组件中,常用的布局管理器.java组件中的布局方式有好几十种,所有的这些布局管理器都实现了java.awt.LayoutManager接口.接下来笔者介绍一下常用的5种布局管理器,FlowLayout.BorderLayout.GridLayout.GridBagLayout.CardLayout.BoxLayout.如果不希望使用布局管理器,可以调用组件的 setLayout(null); ,但是不建议设置layout为null,因为这样就失去了跨平台特性,和jav