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

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

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

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

分析:

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

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

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

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

运行时的显示效果

package swing.layout;

import java.awt.*;
import javax.swing.*; public class GridBagDemo extends JFrame {
private static final long serialVersionUID = 1L; 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;
}

http://www.cnblogs.com/taoweiji/archive/2012/12/14/2818787.html

Java 的布局管理器GridBagLayout的使用方法(转)的更多相关文章

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

    https://www.cnblogs.com/taoweiji/archive/2012/12/14/2818787.html GridBagLayout是java里面最重要的布局管理器之一,可以做 ...

  2. learning java AWT 布局管理器 GridBagLayout

    在GridBagLayout布局管理器中,一个组件可以跨越一个或多个网格,并可以设置各网格的大小互不相关. import java.awt.*; public class GridBagTest { ...

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

    GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求 ...

  4. java基础 布局管理器

    概念: 组建在容器(比如JFrame)中的位置和 大小 是由布局管理器来决定的.所有的容器都会使用一个布局管理器,通过它来自动进行组建的布局管理. 种类: java共提供了物种布局管理器:流式布局管理 ...

  5. 5、Java Swing布局管理器(FlowLayout、BorderLayout、CardLayout、BoxLayout、GirdBagLayout 和 GirdLayout)

    5.Java-Swing常用布局管理器       应用布局管理器都属于相对布局,各组件位置可随界面大小而相应改变,不变的只是其相对位置,布局管理器比较难以控制,一般只在界面大小需要改是才用,但即使这 ...

  6. Java GUI 布局管理器

    容器可设置布局管理器,管理容器中组件的布局: container.setLayout(new XxxLayout()); Java有6种布局管理器,AWT提供了5种: FlowLayout Borde ...

  7. JAVA 网格布局管理器

    //网格布局管理器 import java.awt.*; import javax.swing.*; public class Jiemian3 extends JFrame{ //定义组件 JBut ...

  8. JAVA 边界布局管理器

    //边界布局管理器 import java.awt.*; import javax.swing.*; public class Jiemian1 extends JFrame{ //定义组件 JBut ...

  9. learning java AWT 布局管理器 GridLayout

    GridLayout布局管理器将容器分割成纵横线分格的网格,每个网格所占的区域大小相同. import java.awt.*; public class GridLayoutTest { public ...

随机推荐

  1. jenkins 通过批处理自动构建 非标准项目

    之前介绍了java和vs2010的项目构建,这些都是比较常见的,所以都用专门的工具.但但难免会遇到一些不常见的项目,下面介绍通过批处理进行构建,并用jenkins调用.我们这里使用plc语言,没有标准 ...

  2. MQ、JMS以及ActiveMQ

    MQ简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.消息传 ...

  3. nginx源代码分析--高性能server开发 常见的流程模型

    1.高性能server 对于高性能server对于.处理速度和占用空间小是典型特性.特别是当server经验C10K问题的时候(网络server在处理数以万计的client连接时.往往出现效率低下甚至 ...

  4. 使用jQuery实现tag便签去重效果

    话不多说直接看代码 jsp页面的核心代码 <head> <script type="text/javascript" src="js/jQuery.js ...

  5. AntiXSS - 支持Html同时防止XSS攻击

    AntiXSS - 支持Html同时防止XSS攻击 跨站脚本攻击(XSS)已经不是什么新鲜的话题了,甚至很多大公司也为此吃尽苦头.最简单直接的防范方法,就是不允许任何html标签输入,对用户输入进行编 ...

  6. 断言Assert的使用

     转载地址:http://www.cnblogs.com/moondark/archive/2012/03/12/2392315.html 我一直以为assert仅仅是个报错函数,事实上,它居然是个宏 ...

  7. GOJ1150(矩阵快速幂)

    sum Time Limit: 1000ms Problem Description: 给定a和n,计算a+aa+aaa+aaaa+...+a...a(n个a) 的和. Input: 测试数据有多组, ...

  8. SWT的TableVierer的使用一

    1,简单显示,表格的式样见注释中的内容 import org.eclipse.jface.viewers.TableViewer;import org.eclipse.swt.SWT;import o ...

  9. httpcomponents-client-ga(4.5)

    http://hc.apache.org/httpcomponents-client-ga/tutorial/html/   Chapter 1. Fundamentals Prev     Next ...

  10. MFC控件(15):Tooltip

    在各种软件产品中我们经常碰到把鼠标放到一个控件上时会弹出关于该控件的一些提示信息.这就是tooltip. 在MFC中使用该功能可以使用类CToolTipCtrl.假如要让鼠标放到按钮IDC_BTN上时 ...