GridBagLayout()的使用方法

GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的,

GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。

每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域

下面就通过一个记事本案例去说明GridBagLayout的使用方法。

分析:

带有箭头的说明可以拉伸的。

4占用4个格子,6占用4个格子。如果设置6可以拉伸了,那么4也会跟着拉伸。

但是如果设置4拉伸,那么7所在的列也可以拉伸,所以4不能设置拉伸。我们应该设置4是跟随6进行拉伸。

灰色的线是为了看清布局的大概,组件占用的格子数。

运行时的显示效果

import java.awt.*;
import javax.swing.*;

public class GridBagDemo extends JFrame {
    public static void main(String args[]) {
        GridBagDemo demo = new GridBagDemo();
    }

    public GridBagDemo() {
        init();
        this.setSize(600,600);
        this.setVisible(true);
    }
    public void init() {
        j1 = new JButton("打开");
        j2 = new JButton("保存");
        j3 = new JButton("另存为");
        j4 = new JPanel();
        String[] str = { "java笔记", "C#笔记", "HTML5笔记" };
        j5 = new JComboBox(str);
        j6 = new JTextField();
        j7 = new JButton("清空");
        j8 = new JList(str);
        j9 = new JTextArea();
     j9.setBackground(Color.PINK);//为了看出效果,设置了颜色
        GridBagLayout layout = new GridBagLayout();
        this.setLayout(layout);
        this.add(j1);//把组件添加进jframe
        this.add(j2);
        this.add(j3);
        this.add(j4);
        this.add(j5);
        this.add(j6);
        this.add(j7);
        this.add(j8);
        this.add(j9);
        GridBagConstraints s= new GridBagConstraints();//定义一个GridBagConstraints,
        //是用来控制添加进的组件的显示位置
        s.fill = GridBagConstraints.BOTH;
        //该方法是为了设置如果组件所在的区域比组件本身要大时的显示情况
        //NONE:不调整组件大小。
        //HORIZONTAL:加宽组件,使它在水平方向上填满其显示区域,但是不改变高度。
        //VERTICAL:加高组件,使它在垂直方向上填满其显示区域,但是不改变宽度。
        //BOTH:使组件完全填满其显示区域。
        s.gridwidth=1;//该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个
        s.weightx = 0;//该方法设置组件水平的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
        s.weighty=0;//该方法设置组件垂直的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
        layout.setConstraints(j1, s);//设置组件
        s.gridwidth=1;
        s.weightx = 0;
        s.weighty=0;
        layout.setConstraints(j2, s);
        s.gridwidth=1;
        s.weightx = 0;
        s.weighty=0;
        layout.setConstraints(j3, s);
        s.gridwidth=0;//该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个
        s.weightx = 0;//不能为1,j4是占了4个格,并且可以横向拉伸,
        //但是如果为1,后面行的列的格也会跟着拉伸,导致j7所在的列也可以拉伸
        //所以应该是跟着j6进行拉伸
        s.weighty=0;
        layout.setConstraints(j4, s)
        ;s.gridwidth=2;
        s.weightx = 0;
        s.weighty=0;
        layout.setConstraints(j5, s);
        ;s.gridwidth=4;
        s.weightx = 1;
        s.weighty=0;
        layout.setConstraints(j6, s);
        ;s.gridwidth=0;
        s.weightx = 0;
        s.weighty=0;
        layout.setConstraints(j7, s);
        ;s.gridwidth=2;
        s.weightx = 0;
        s.weighty=1;
        layout.setConstraints(j8, s);
        ;s.gridwidth=5;
        s.weightx = 0;
        s.weighty=1;
        layout.setConstraints(j9, s);
    }
    JButton j1;
    JButton j2;
    JButton j3;
    JPanel j4;
    JComboBox j5;
    JTextField j6;
    JButton j7;
    JList j8;
    JTextArea j9;
}

  

时间: 2024-08-10 21:19:29

GridBagLayout()的使用方法的相关文章

Java 的布局管理器GridBagLayout的使用方法(转)

GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直.水平或沿它们的基线对齐. 每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域. 下面就通过一个记事本案例去说明GridBagLayout的使用方法. 分析: 带有箭头的说明可以拉伸的. 4占用4个格

Java 的布局管理器GridBagLayout的使用方法【图文说明】

https://www.cnblogs.com/taoweiji/archive/2012/12/14/2818787.html GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直.水平或沿它们的基线对齐. 每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为

Java Swing布局管理器GridBagLayout的使用示例 [转]

GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直.水平或沿它们的基线对齐. 每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域. 下面就通过一个记事本案例去说明GridBagLayout的使用方法. 分析: 带有箭头的说明可以拉伸的. 4占用4个格

第11章 AWT编程

第11章 AWT编程 AWT全称是抽象窗口工具集 GUI 图形用户界面 AWT缺点 1.图形显示丑陋 2.AWT组件这能使用这些操作系统共有的组件 3.AWT非常笨拙,是非面向对象的编程模式 总体上Swing组件代替了大部分AWT组件,对AWT有很好的补充和加强 Swing仅提供了能力更强大的用户界面组件,即使是完成采用Swing编写的组件也依然要使用AWT的事件处理机制 java.awt包中提供了两个基类表示图形界面元素 Component 和MenuComponent 代表一个能以图形化方式

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

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

GridBagLayout

GridBagLayout用法 前言 使用Swing进行Java的GUI编程,其中一个难点就是页面布局.弄好了页面布局,就像是跨越了一个初级的里程碑.我主要是从事B/S的系统开发,基于新的应用需要,现在才来补一回Swing,一些简单的布局不想多说,只是看到一个比较实用,而且比起那些简单的布局复杂一点的GridBagLayout来说一下.作为自己的笔记,也希望当作和想学习此局布的朋友的谈资. 指定约束(constrains) 比起其它的布局,GridBagLayout多了一个约束的概念.可以这样理

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

GridBagLayout布局管理器应用详解

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

GridBagLayout布局

Java,Swing用户界面中,使用GridBagLayout布局,可以灵活的放置组件和自定义其随窗口变化的适应性. 首先,如何使用GridBagLayout布局 GridBagLayout lay=new GridBagLayout(); GridBagConstraints c=new GridBagConstraints(); frame.setLayout(lay);//为frame设置布局管理器 //设置c的各项参数 lay.setConstraints(panel1, c);//放置