`

GridBagLayout

 
阅读更多

GridBagLayout的使用:

GridBagLayout是java中最有弹性但也是最复杂的一种版面管理器。它只有一种构造函数,但必须配合GridBagConstraints才能达到设置的效果。 GridBagLayout的类层次结构图:

java.lang.Object
     --java.awt.GridBagLayout
构造函数:

GirdBagLayout()建立一个新的GridBagLayout管理器。 
GridBagConstraints()建立一个新的GridBagConstraints对象。
GridBagConstraints(int gridx,int gridy,int gridwidth,int gridheight,double weightx,double weighty, int anchor,int fill, Insets insets,int ipadx,int ipady)建立一个新的GridBagConstraints对象 ,并指定其参数的值。

参数说明:

gridx,gridy:设置组件的位置,gridx设置为GridBagConstraints.RELATIVE代表此组件位于之前所加入组件的右边。 若将gridy设置为GridBagConstraints.RELATIVE代表此组件位于以前所加入组件的下面。建议定义出gridx,gridy的位置,以便以后维护程序。表示放在几行几列,gridx=0,gridy=0时放在0行0列。

gridwidth,gridheight:用来设置组件所占的单位长度与高度,默认值皆为1。你可以使用GridBagConstraints.REMAINDER常 量,代表此组件为此行或此列的最后一个组件,而且会占据所有剩余的空间。

weightx,weighty:用来设置窗口变大时,各组件跟着变大的比例,当数字越大,表示组件能得到更多的空间,默认值皆为0。

anchor:当组件空间大于组件本身时,要将组件置于何处,有CENTER(默认值)、NORTH、NORTHEAST、EAST、SOUTHEAST、 WEST、NORTHWEST可供选择。

insets:设置组件之间彼此的间距,它有四个参数,分别是上,左,下,右,默认为(0,0,0,0).

ipadx,ipady:设置组件内的间距,默认值为0。

我们以前提过,GridBagLayout里的各种设置都必须通过GridBagConstraints,因此当我们将GridBagConstraints的参数都设置 好了之后,必须new一个GridBagConstraints的对象出来,以便GridBagLayout使用。

例子: GridBagLayoutDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GridBagLayoutDemo {
	public GridBagLayoutDemo() {
		JButton b;
		GridBagConstraints c;
		int gridx, gridy, gridwidth, gridheight, anchor, fill, ipadx, ipady;
		double weightx, weighty;
		Insets inset;

		JFrame f = new JFrame();

		GridBagLayout gridbag = new GridBagLayout();
		Container contentPane = f.getContentPane();
		contentPane.setLayout(gridbag);

		b = new JButton("first");
		gridx = 0;
		gridy = 0;
		gridwidth = 1;
		gridheight = 1;
		weightx = 10;
		weighty = 1;
		anchor = GridBagConstraints.CENTER;
		fill = GridBagConstraints.HORIZONTAL;
		inset = new Insets(0, 0, 0, 0);
		ipadx = 0;
		ipady = 0;
		c = new GridBagConstraints(gridx, gridy, gridwidth, gridheight,
				weightx, weighty, anchor, fill, inset, ipadx, ipady);
		gridbag.setConstraints(b, c);
		contentPane.add(b);

		b = new JButton("second");
		gridx = 1;
		gridy = 0;
		gridwidth = 2;
		gridheight = 1;
		weightx = 1;
		weighty = 1;
		anchor = GridBagConstraints.CENTER;
		fill = GridBagConstraints.HORIZONTAL;
		inset = new Insets(0, 0, 0, 0);
		ipadx = 50;
		ipady = 0;
		c = new GridBagConstraints(gridx, gridy, gridwidth, gridheight,
				weightx, weighty, anchor, fill, inset, ipadx, ipady);
		gridbag.setConstraints(b, c);
		contentPane.add(b);

		b = new JButton("third");
		gridx = 0;
		gridy = 1;
		gridwidth = 1;
		gridheight = 1;
		weightx = 1;
		weighty = 1;
		anchor = GridBagConstraints.CENTER;
		fill = GridBagConstraints.HORIZONTAL;
		inset = new Insets(0, 0, 0, 0);
		ipadx = 0;
		ipady = 50;
		c = new GridBagConstraints(gridx, gridy, gridwidth, gridheight,
				weightx, weighty, anchor, fill, inset, ipadx, ipady);
		gridbag.setConstraints(b, c);
		contentPane.add(b);

		b = new JButton("fourth");
		gridx = 1;
		gridy = 1;
		gridwidth = 1;
		gridheight = 1;
		weightx = 1;
		weighty = 1;
		anchor = GridBagConstraints.CENTER;
		fill = GridBagConstraints.HORIZONTAL;
		inset = new Insets(0, 0, 0, 0);
		ipadx = 0;
		ipady = 0;
		c = new GridBagConstraints(gridx, gridy, gridwidth, gridheight,
				weightx, weighty, anchor, fill, inset, ipadx, ipady);
		gridbag.setConstraints(b, c);
		contentPane.add(b);

		b = new JButton("This is the last button");
		gridx = 2;
		gridy = 1;
		gridwidth = 1;
		gridheight = 2;
		weightx = 1;
		weighty = 1;
		anchor = GridBagConstraints.CENTER;
		fill = GridBagConstraints.HORIZONTAL;
		inset = new Insets(0, 0, 0, 0);
		ipadx = 0;
		ipady = 50;
		c = new GridBagConstraints(gridx, gridy, gridwidth, gridheight,
				weightx, weighty, anchor, fill, inset, ipadx, ipady);
		gridbag.setConstraints(b, c);
		contentPane.add(b);

		f.setTitle("GridBagLayout");
		f.pack();
		f.setVisible(true);
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}

	public static void main(String[] args) {
		new GridBagLayoutDemo();
	}
} 
分享到:
评论

相关推荐

    Java中GridBagLayout的用法

    ### Java中GridBagLayout的用法详解 #### 一、GridBagLayout简介 GridBagLayout是一种高度灵活且功能强大的布局管理器,在Java Swing图形用户界面编程中被广泛使用。相较于其他布局管理器如FlowLayout或...

    网袋布局管理器--GridBagLayout使用介绍

    在Java Swing中,`GridBagLayout`是一种非常灵活的布局管理器,允许开发者精确控制组件在容器中的位置和大小。由于其灵活性,`GridBagLayout`成为创建复杂、自定义布局的理想选择,但它的确比其他布局管理器更复杂。...

    GridBagLayout && JTable 排序

    在Java Swing中,`GridBagLayout`是一种灵活的布局管理器,它允许开发者精确地控制组件在容器中的位置和大小。而`JTable`是Swing提供的一种用于展示表格数据的组件,通常用于数据的显示、编辑和排序。这篇博客文章...

    java网格包GridBagLayout布局管理器专题

    Java中的GridBagLayout布局管理器是Java Swing中用于组织组件的一种高级布局策略,它提供了最大的灵活性,能够处理不同大小的组件并允许它们跨多个网格单元,甚至部分重叠。GridBagLayout通过GridBagConstraints对象...

    GridBagLayout布局器的使用

    Java Swing GridBagLayout,很详细的Demo,对GridBagLayout如何使用做全面的讲解

    Swing的GridBagLayout布局应用详解(附Java源代码)

    本文通过代码示例的方式介绍了Swing的GridBagLayout布局样式的应用,不拘泥于JDK文档教条方式的陈述,图形效果图与文字相结合,讲解直观而浅显易懂,另外,示例代码中还包含了BorderLayout、FlowLayout等布局的应用...

    GridBagLayout布局详解

    GridBagLayout 布局详解 GridBagLayout 是 Java Swing 编程中的一种强大且灵活的布局管理器,它可以实现几乎所有你想要的布局。通过设置 GridBagConstraints 对象的参数,可以控制组件在显示区域中的位置、大小和...

    Java中GridBagLayout管理器实例.pdf

    在Java GUI编程中,`GridBagLayout`是一个强大的布局管理器,它允许开发者精确地控制组件在容器中的位置和大小。与其他布局管理器不同,`GridBagLayout`提供了更大的灵活性,使得开发者能够创建复杂的界面布局。以下...

    matlab开发-GridBagLayout.zip

    GridBagLayout是Java Swing布局管理器之一,但MATLAB的 GUIDE工具(GUI Development Environment)同样支持它,使得我们可以利用GridBagLayout来创建复杂且灵活的布局。GridBagLayout允许在GUI窗口中动态地排列组件...

    matlab开发-GridBagLayout

    在MATLAB编程环境中,`GridBagLayout`是一个用于组织和管理图形用户界面(GUI)组件的强大工具。这个布局管理器允许开发者以灵活的方式排列和调整`uicontrols`(如按钮、文本框等)、`uipanels`和`uicontainers`的...

    java网格包GridBagLayout布局管理器专题借鉴.pdf

    Java中的GridBagLayout布局管理器是Java Swing中最复杂但也是最灵活的布局管理工具,它允许容器中的组件具有不同的大小,可以跨越多个网格,并且组件之间可以部分重叠。理解GridBagLayout的关键在于掌握它的网格单元...

    GridBagLayout布局管理器的运用

    这是为初初学者提供练习的代码,具有很强的指导效果哈~~~

    java中GridBagLayout布局管理器的详细讲解.doc

    ### Java中GridBagLayout布局管理器的详细讲解 #### 一、引言 在Java图形用户界面(GUI)设计中,界面布局是非常重要的一个环节。合理的布局不仅能够提高应用程序的美观性,还能够提升用户体验。Java提供了多种...

    java网格包GridBagLayout布局管理器专题的分析.pdf

    Java中的GridBagLayout布局管理器是Java Swing中最复杂但也是最灵活的布局管理工具,它允许组件在容器中以不同的大小存在,甚至可以跨多个网格并部分重叠。这种布局管理器将容器划分为一系列网格单元,每个组件可以...

    java网格包GridBagLayout布局管理器专题.pdf

    Java 网格包 GridBagLayout 布局管理器专题 Java 网格包 GridBagLayout 布局管理器是 Java 语言中最复杂和灵活的布局管理器之一。与网格布局管理器不同的是,网格包布局管理器允许容器中各个组件的大小各不相同,还...

    java swing布局管理器实例之gridbaglayout,实现左右选择框.doc

    在众多的布局管理器中,`GridBagLayout` 是最为灵活,但也最为复杂的。它允许开发者精确地控制组件的位置和大小,以适应各种复杂的布局需求。 在`GridBagLayout`中,有几个核心参数对于理解和使用该布局管理器至关...

    Java Swing GridBagLayout网格袋布局的实现

    Java Swing GridBagLayout网格袋布局的实现 Java Swing GridBagLayout网格袋布局是Java Swing中一种常用的布局管理器,能够灵活地管理组件的布局。GridBagLayout通过将组件安排在网格单元格中来管理布局,每个组件...

    Java 最重要布局管理器GridBagLayout的使用方法

    Java中的`GridBagLayout`是Swing库中最强大的布局管理器之一,允许开发者创建复杂的、自适应的用户界面。这个布局管理器通过一个网格来组织组件,每个组件可以在网格中占据一个或多个单元格,提供了极大的灵活性。...

    html的table标签作配置,进行swing的GridBagLayout布局

    根据html的table标签作为配置文件,进行swing GridBagLayout方式的布局管理。简化swing复杂界面布局不方便,容器定位的问题。 具体思想是将tabel td等标签相关元素和属性映射成GridBagConstraints的属性值,将布局...

Global site tag (gtag.js) - Google Analytics