`
longying2008
  • 浏览: 302072 次
社区版块
存档分类
最新评论

菜鸟编程之java查缺补漏——GridBagLayout布局

阅读更多

在向由GridBagLayout类管理的容器中添加组件时,需要为每个组件创建一个与之关联的GridBagContrains类的对象,通过该类的属性设置组件的布局信息。

 

GridBagConstraints常用字段:

 

(1)gridx和gridy

gridx:指定包含组件的显示区域开始边的单元格,其中行的第一个单元格为 gridx=0

gridy:指定位于组件显示区域的顶部的单元格,其中最上边的单元格为 gridy=0

 

(2)gridwidth和gridheight

gridwidth:指定组件显示区域的某一行中的单元格数。

gridheight:指定在组件显示区域的一列中的单元格数。

 

(3)insets

insets:指定组件的外部填充,即组件与其显示区域边缘之间间距的最小量。

//该控件与上边缘、左边缘、下边缘、右边缘的间距是分别是1、2、3、4

gridBagConstraints.insets=new Insets(1,2,3,4);

 

(4)fill

当组件的显示区域大于它所请求的显示区域的大小时使用此字段。它可以确定是否调整组件大小,以及在需要的时候如何进行调整。即:当单元格显示区域的面积大于组件的面积时,或者一个组件占用多个单元格时,显示组件可能不必占用所有显示区域,这种情况下使用fill属性设置组件的填充方式。

  • NONE:不调整组件大小。
  • HORIZONTAL:加宽组件,使它在水平方向上填满其显示区域,但是不改变高度。
  • VERTICAL:加高组件,使它在垂直方向上填满其显示区域,但是不改变宽度。
  • BOTH:使组件完全填满其显示区域。

(5)ipadx和ipady

ipadx:指定组件的内部填充,即给组件的最小宽度添加多大的空间。

ipady:指定内部填充,即给组件的最小高度添加多大的空间。

 

import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/*
 * 在向由GridBagLayout类管理的容器中添加组件时,需要为每个组件创建一个与之
 * 关联的GridBagContrains类的对象,通过该类的属性设置组件的布局信息
 */

public class Test_GridBagLayout extends JFrame{

	JButton []button;
	JPanel panel1,panel2,panel3;
	
	GridBagLayout gridBag=new GridBagLayout();
	GridBagConstraints gridBagCon;
	
	public Test_GridBagLayout(){
		initFrame();
		Dimension faceSize=new Dimension(400,600);
		this.setSize(faceSize);
		//设置窗体的显示区域
		Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
		this.setLocation((int)(screenSize.width-faceSize.width)/2,
				(int)(screenSize.height-faceSize.height)/2);
		//
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
	/*
	 * 初始化界面
	 */
	public void initFrame(){
		//初始化JButton控件
		button=new JButton[11];
		for(int i=0;i<button.length;i++){
			button[i]=new JButton();
		}
		//初始化JPanel控件
		panel1=new JPanel();
		panel2=new JPanel();
		panel3=new JPanel();
		
		//panel1演示gridx和gridy
		panel1.setLayout(gridBag);
		//向panel1中添加button[0];
		button[0].setText("组件A(0,0)");
		gridBagCon=new GridBagConstraints();
		gridBagCon.gridx=0;
		gridBagCon.gridy=0;
		gridBag.setConstraints(button[0], gridBagCon);
		panel1.add(button[0]);
		//向panel1中添加button[1];
		button[1].setText("组件B(2,0)");
		gridBagCon=new GridBagConstraints();
		gridBagCon.gridx=2;
		gridBagCon.gridy=0;
		gridBag.setConstraints(button[1], gridBagCon);
		panel1.add(button[1]);
		//向panel1中添加button[2];
		button[2].setText("组件C(1,1)");
		gridBagCon=new GridBagConstraints();
		gridBagCon.gridx=1;
		gridBagCon.gridy=1;
		gridBag.setConstraints(button[2], gridBagCon);
		panel1.add(button[2]);
		//向panel1中添加button[3];
		button[3].setText("组件D(2,2)");
		gridBagCon=new GridBagConstraints();
		gridBagCon.gridx=2;
		gridBagCon.gridy=2;
		gridBag.setConstraints(button[3], gridBagCon);
		panel1.add(button[3]);
		
		//panel2演示gridwidth和gridheight属性
		panel2.setLayout(gridBag);
		//向panel2中添加button[4]
		button[4].setText("组件1(2,1)");
		gridBagCon=new GridBagConstraints();
		gridBagCon.gridx=0;
		gridBagCon.gridy=0;
		gridBagCon.gridwidth=2;
		gridBagCon.gridheight=1;
		gridBag.setConstraints(button[4], gridBagCon);
		panel2.add(button[4]);
		//向panel2中添加button[5]
		button[5].setText("组件2(1,2)");
		gridBagCon=new GridBagConstraints();
		gridBagCon.gridx=0;
		gridBagCon.gridy=2;
		gridBagCon.gridwidth=1;
		gridBagCon.gridheight=2;
		gridBag.setConstraints(button[5], gridBagCon);
		panel2.add(button[5]);
		//向panel2中添加button[6]
		button[6].setText("组件3(2,2)");
		gridBagCon=new GridBagConstraints();
		gridBagCon.gridx=3;
		gridBagCon.gridy=3;
		gridBagCon.gridwidth=2;
		gridBagCon.gridheight=2;
		gridBag.setConstraints(button[6], gridBagCon);
		panel2.add(button[6]);
		
		//panel3演示ipadx和ipady
		panel3.setLayout(gridBag);
		//向panel3中添加button[7]
		button[7].setText("组件Ⅰ");
		gridBagCon=new GridBagConstraints();
		gridBagCon.gridx=0;
		gridBagCon.gridy=0;
		gridBag.setConstraints(button[7], gridBagCon);
		panel3.add(button[7]);
		//向panel3中添加button[8]
		button[8].setText("组件Ⅱ");
		gridBagCon=new GridBagConstraints();
		gridBagCon.gridx=0;
		gridBagCon.gridy=1;
		gridBag.setConstraints(button[8], gridBagCon);
		panel3.add(button[8]);
		//向panel3中添加button[9]
		button[9].setText("组件Ⅲ");
		gridBagCon=new GridBagConstraints();
		gridBagCon.gridx=1;
		gridBagCon.gridy=0;
		gridBag.setConstraints(button[9], gridBagCon);
		panel3.add(button[9]);
		//向panel3中添加button[10]
		button[10].setText("组件Ⅳ");
		gridBagCon=new GridBagConstraints();
		gridBagCon.gridx=1;
		gridBagCon.gridy=1;
		gridBagCon.ipadx=10;
		gridBagCon.ipady=20;
		gridBag.setConstraints(button[10], gridBagCon);
		panel3.add(button[10]);
		
		//添加panel1,panel2,panel3
		Container contentPane=this.getContentPane();
		contentPane.setLayout(new GridLayout(3,1));
		contentPane.add(panel1);
		contentPane.add(panel2);
		contentPane.add(panel3);
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		new Test_GridBagLayout();
	}

}

 

分享到:
评论

相关推荐

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

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

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

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

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

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

    GridBagLayout布局管理器的运用

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

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

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

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

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

    GridBagLayout布局器的使用

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

    Java大学简明教程——实例程序设计

    Java大学简明教程——实例程序设计,这是一份专为初学者和进阶者准备的Java编程学习资源,尤其在实战应用方面具有很高的价值。它包含了一系列精心设计的实例,旨在帮助读者深入理解和掌握Java语言的核心概念以及...

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

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

    java 图形界面程序——科研申报

    在Java编程领域,图形用户界面(GUI)是创建与用户交互的应用程序的重要组成部分。本项目“java 图形界面程序——科研申报”就是这样一个基于Java Swing的GUI应用,它旨在为科研申报提供一个友好的交互平台。Java ...

    Java中GridBagLayout的用法

    GridBagLayout是一种高度灵活且功能强大的布局管理器,在Java Swing图形用户界面编程中被广泛使用。相较于其他布局管理器如FlowLayout或BorderLayout,GridBagLayout提供更精细的控制能力,允许开发者精确地指定组件...

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

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

    利用网格布局写的一个java计算器

    在Java编程领域,开发用户界面(UI)是常见的任务之一,尤其在创建桌面应用时。本项目利用Java的Swing库,通过网格布局(Grid Layout)设计了一个简单的计算器。Swing是Java标准版(Java SE)的一部分,提供了丰富的...

    GridBagLayout布局详解

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

    GridBagLayout && JTable 排序

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

    Java小程序——山区果园

    【Java小程序——山区果园】是一款基于Java GUI(图形用户界面)技术开发的应用程序,主要针对初学者设计,旨在帮助他们理解和实践Java编程语言中的GUI编程。这个小程序通过模拟山区果园的场景,提供了一个互动的...

    编程语言JAVA布局管理.pdf

    5. GridBagLayout(网格带布局管理器):是Java中最复杂的布局管理器之一,允许通过约束条件来精细控制组件的布局。使用GridBagLayout时,需要为每个组件指定GridBagConstraints,可以设置组件在网格中的位置、填充...

    第六个范例——布局之ContentPane

    【标题】"第六个范例——布局之ContentPane"是一个关于Java Swing编程的示例,主要讲解如何使用ContentPane作为容器来管理窗口中的组件布局。在Java GUI应用开发中,ContentPane是JFrame或JDialog等顶级容器的主要...

    JAVA课程设计——网络版五子棋

    此外,使用Layout Managers(布局管理器)如GridLayout和GridBagLayout来组织这些组件,以实现棋盘的网格布局。 3. **多线程**:在网络版五子棋中,为了保证游戏流畅性,使用了多线程技术。一个线程处理用户界面的...

Global site tag (gtag.js) - Google Analytics