精华内容
下载资源
问答
  • java网格组布局
    2021-04-17 07:14:21

    第12章 布局设计当我们把组件添加到容器中时,希望控制组件在容器中的位置,这就需要学习布局设 计的知识。我们将分别介绍java.awt包中的FlowLayout、BorderLayout、......

    Example13_08.java 13.3.3 常用布局 4、GridBagLayout java.awt.GridBagLayout称为网格包布局管理器,不需要组件大小相同就可以按水平、垂直或 沿着基线对齐。 ...

    对布局中所有组件所给的大小一样。 setLayout(new GridLayout(int rows, int cols, int hgap, int vgap); 网格包布局(GridBagLayout) GridBag布局管理器在......

    布局类型 ? Java中的布局类型包括以下几种: - FlowLayout(流式布局) - BorderLayout (边界布局) - GridLayout(网格布局) - CardLayout (卡片布局) - Box......

    布局类型 ? Java中的布局类型包括以下几种: FlowLayout(流式布局) y (边界布局) BorderLayout GridLayout(网格布局) CardLayout (卡片布局) BoxLayout(框布局) ......

    见:书上例子及ch08.CardLayoutDemo.java 十. GridBagLayout网格包布局管理器 在网格的基础上提供更为复杂的布局。和GridLayout不同, GridBagLayout允许容器中各个......

    FlowLayout 见例题: 见例题:FlowWindow.java 编写图形界面应用程序 布局管理器 3. ? GridLayout 基本布局策略是把容器的空间划分成若干行乘若干列的网格区域, ......

    在java.awt包中提供了五种布局管理 器,分别是FlowLayout(流式布局管理器)、BorderLayout(边界布局管理器)、 GridLayout(网格布局管理器)、GridBagLayout(网格包布局......

    GridLayout(网格布局) (网格布局) CardLayout (卡片布局) 卡片布局) GridBagLayout(网格包布局) (网格包布局) 6 10.2.1 FlowLayout布局管理器 FlowLayout布局......

    18 JAVA 语言 第10讲 Java共有6种基本的布局管理器,它们分别为: - FlowLayout(流式布局) - GridLayout(网格布局) - BorderLayout (边界布局) - CardLayout ......

    GridLayout(网格布局) ? GridBagLayout(网格包布局) ? CardLayout (卡片布局) JAVA基础培训—Java的GUI编程为容器设置布局 ? 布局管理器(LayoutManager)指的是Flow......

    20 布局类型 ? Java中的布局类型包括以下几种: FlowLayout(流式布局) BorderLayout (边界布局) GridLayout(网格布局) GridBagLayout(网格包布局) CardLayout (卡片......

    (5).网格包布局管理器(GridBagLayout) 含义:网格包布局管理器既可以实现网格布局的效果, 也可以实现比网格布局更加复杂的布局,是一种很灵活也 很难以掌握的布局......

    (5).网格包布局管理器(GridBagLayout) 含义:网格包布局管理器既可以实现网格布局的效果, 也可以实现比网格布局更加复杂的布局,是一种很灵活也 很难以掌握的布局......

    程序保存为 Experiment9_1.java。 图:实验 6-1 主要程序代码: class Frame1...("㏒"); c) 将一 JPanel 面板设置为 GridLayout 网格布局,然后将按钮加入......

    Java提供以下几种布局管理器: 提供以下几种布局管理器: 提供以下几种布局管理器 流布局(FlowLayout)、边界布局 流布局 、边界布局(BorderLayout)、、 网格布局(......

    程序功能:在 Applet 容器中添加组件标签、按钮,并使用网格布局管理器排列组 件在容器中的位置。 ? 编写 KY7_1.java 程序文件,源代码如下。 import java.awt.......

    在包中提供了五种布局管理器,分别是 FlowLayout(流式布局管理器)、BorderLayout(边 界布局管理器)、GridLayout(网格布局管理器)、GridBagLayout(网格包布局管理器)......

    在包中提供了五种布局管理器,分别是 FlowLayout (流式布局管理器)、 BorderLayout(边界布局管理器)、GridLayout(网格布局管理器)、GridBagLayout (网格包布局管理器......

    提供.net 和 Java 的开发工具 功能要求 支持兀数据的创建和发布; 提供通用的框架...地理信息服务平台软件必须遵循国际国内行业主流标准, 例 标 如网格协议标准 TCP......

    更多相关内容
  • java 网格组布局

    2015-06-11 15:59:09
    package com.xinhua.gridbaglayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.JButton; import javax.swing.JFrame; pu
    package com.xinhua.gridbaglayout;


    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;


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


    public class TestGridBagLayout extends JFrame {


    public TestGridBagLayout() {
    setTitle("网格组布局测试");
    getContentPane().setLayout(new GridBagLayout());
    setBounds(100, 100, 500, 170);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JButton button = new JButton("A");
    GridBagConstraints gridBagConstraints = new GridBagConstraints();

    //起始点为第1行,注意gridy是行
    gridBagConstraints.gridy = 0;
    // 起始点为第一列,注意坐标轴特点
    gridBagConstraints.gridx = 0;
    // 第一列的分布方式为10%
    gridBagConstraints.weightx = 10;
    gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
    getContentPane().add(button, gridBagConstraints);

    JButton button1 = new JButton("B");
    GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
    gridBagConstraints1.gridy = 0;
    gridBagConstraints1.gridx = 1;
    // 设置组件左侧的最小距离
    gridBagConstraints1.insets = new Insets(0, 5, 0, 0);
    gridBagConstraints1.weightx = 20;
    gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
    getContentPane().add(button1, gridBagConstraints1);


    JButton button2 = new JButton("C");
    GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
    // 起始点为第1行
    gridBagConstraints2.gridy = 0;
    // 起始点为第3列
    gridBagConstraints2.gridx = 2;
    gridBagConstraints2.gridheight = 2;
    gridBagConstraints2.insets = new Insets(0, 5, 0, 0);
    // 第一列的分布方式为30%
    gridBagConstraints2.weightx = 30;
    // 组件宽度高度同时调制至填满显示区域
    gridBagConstraints2.fill = GridBagConstraints.BOTH;
    getContentPane().add(button2, gridBagConstraints2);

    JButton button3 = new JButton("D");
    GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
    gridBagConstraints3.gridy = 0;
    gridBagConstraints3.gridx = 3;
    gridBagConstraints2.gridheight = 4;
    // 设置组件左侧和右侧的最小距离
    gridBagConstraints3.insets = new Insets(0, 5, 0, 5);
    gridBagConstraints3.weightx = 40;
    gridBagConstraints3.fill = GridBagConstraints.BOTH;
    getContentPane().add(button3, gridBagConstraints3);


    JButton button4 = new JButton("E");
    GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
    gridBagConstraints4.gridy = 1;
    gridBagConstraints4.gridx = 0;
    // 组件占用两列
    gridBagConstraints4.gridwidth = 2;
    gridBagConstraints4.insets = new Insets(5, 0, 0, 0);
    gridBagConstraints4.fill = GridBagConstraints.HORIZONTAL;
    getContentPane().add(button4, gridBagConstraints4);


    setVisible(true);
    }


    public static void main(String[] args) {
    new TestGridBagLayout();
    }
    }
    展开全文
  • JAVA网格组布局管理器

    2019-10-10 17:20:18
    由GridBagLayout类实现的布局管理器称为网格组布局管理器,它实现了一个动态的矩形网格,这个矩形网格由无数个矩形单元格组成,每个组件可以占用一个或多个这样的单元格。 在向GridBagLayout类管理的容器中添加组件...

    由GridBagLayout类实现的布局管理器称为网格组布局管理器,它实现了一个动态的矩形网格,这个矩形网格由无数个矩形单元格组成,每个组件可以占用一个或多个这样的单元格。

    在向GridBagLayout类管理的容器中添加组件时,需要为每个组件创建一个与之关联的GridBagConstraints类的对象,通过该类中的属性可以设置组件的布局信息,如组件在网格组中位于第几行、第几列,以及需要占用几行几列等。

    通过GridBagLayout类实现的矩形网格的绘制方向由容器决定,如果容器的方向是从左到右,则位于矩形网格左上角的单元格的索引列为0,此时组件左上角的点为起始点;如果容器的方向是从右到左,则位于矩形网格右上角的单元格的列索引为0,此时组件右上角的点为起始点。

    (1)gridx和gridy属性
    这两个属性用来设置组件起始点所在单元格的索引值。属性gridx设置的是X轴(即网格水平方向)的索引值,所以它表示的是组件起始点所在列的索引;属性gridy设置的是Y轴(即网格垂直方向)的索引值,所以它表示组件起始点所在行的索引。

    (2)gridwidth和gridheight属性
    这两个属性用来设置组件占用网格组的行数和列数。属性gridwidth为组件占用网格组的列数,也可以理解为以单元格为单位组件的宽度;属性gridheight为组件占用网格组的行数,也可以理解为以单元格为单位组件的高度。

    (3)anchor属性
    属性anchor用来设置组件在其所在显示区域的显示位置。通常将显示区域从方向上划分为9个方位,分别为北方(NORTH)、东北(NORTHEAST)、东方(EAST)、东南(SOUTHEAST)、南方(SOUTH)、西南(SOUTHWEST)、西方(WEST)、西北(NORTHWEST)和中心(CENTER),代表这9个方位的单词也是该类中的静态常量,可以利用这9个静态常量设置anchor属性,其中静态常量CENTER为默认位置。

    (4)fill属性
    属性fill用来设置组件的填充方式。当单元格显示区域的面积大于组件面积,或者一个组件占用多个单元格时,显示组件可能不必占用所有显示区域,在这种情况下可以通过fill属性设置组件的填充方式。可以利用4个静态常量设置该属性,默认情况下将该属性设置为静态常量NONE,即不调整组件大小至填满显示区域;如果将该属性设置为静态常量HORIZONTAL,表示只调整组件水平方向的大小(即组件宽度)至填满显示区域;如果将该属性设置为静态常量VERTICAL,表示只调整组件垂直方向的大小(即组件高度)至填满显示区域;如果将该属性设置为静态常量BOTH,则表示同时调整组件的宽度和高度至填满显示区域。

    (5)insets属性
    属性insets用来设置组件四周与单元格边缘之间的最小距离。该属性的类型为Insets,Insets类仅有一个构造方法Insets(int top,int left,int bottom,int right),它的4个入口参数依次为组件上方、左侧、下方和右侧的最小距离,单位为像数。

    (6)ipadx和ipady属性
    这两个属性用来修改组件的首选大小。属性ipadx用来修改组件的宽度,属性ipady用来修改组件的高度。如果为正数,则在首选大小的基础上增加指定的宽度和高度。如果为负数,则在首选大小的基础上减小指定的宽度和高度。


    (7)weightx和weighty属性
    这两个属性用来设置网格组的每一行和每一列对额外空间的分布方式。在不设置属性weightx和weighty(即采用默认设置)的情况下,当窗体调整到足够大时,组件全部聚集在窗体的中央,在组件四周出现了大片的额外空间。为了避免这种情况出现,可以通过这两个属性设置网格组的每一行和每一列对额外空间的分布方式。

    这两个属性的默认值均为0,表示不分布容器的额外空间。属性weightx用来设置其所在列对额外空间的分布方式,如果在该列中设置了多个weightx属性,则取它们的最大值为该列的分布方式;属性weighty用来设置其所在行对额外空间的分布方式,如果在该列中设置了多个weighty属性,则取它们的最大值为该列的分布方式.
    (在设置网格组的每一行和每一列对额外空间的分布方式时,建议只设置第一行的weightx属性和第一列的weighty属性,这样会方便前期调试和后期维护)
    网格组的行和列对额外空间的分布方式完全相同,以行为例:网格组布局管理器首先计算出每一行的分布方式,即获取每一行的weighty属性的最大值,然后计算每个最大值总和的百分比,最后将额外空间的相应百分比分配给对应行。

    (在设置网格组的每一行和每一列对额外空间的分布方式时,建议为各个属性按百分比取值)

    展开全文
  • 二、网格组布局说明 (一)、源码A 1、源码A说明 2、源码A运行效果 (二)、源码B(源码A基础上添加方法way3、way4) 1、源码B说明 2、源码B的运行效果 (三)、源码C(源码B的基础上添加方法way4) 1、源码...

    目录

    一、关键代码

    (一)、网格组约束条件

    (二)、约束的“条件”

    1、坐标

    2、尺寸

    3、填充(fill)属性

    二、网格组布局说明

    (一)、源码A

    1、源码A说明

    2、源码A运行效果

    (二)、源码B(源码A基础上添加方法way3、way4)

    1、源码B说明

    2、源码B的运行效果

    (三)、源码C(源码B的基础上添加方法way4)

    1、源码C说明

    2、源码C的运行效果

    (四)、源码C关于fill属性的运行效果

    1-1、全填充(BOTH):

    1-2、按钮3(名为:0.0)全填充(BOTH)的运行效果:

    2-1、垂直填充(VERTICAL):

    2-2、按钮3(名为:“0.0”)垂直填充(VERTICAL)的运行效果:

    3-1、水平填充(HORIZONTAL):

    3-2、按钮3(名为:“0.0”)水平填充(HORIZONTAL)的运行效果:

    三、定位日期


    一、关键代码

    (一)、网格组约束条件

            由下代码创建一个网格包约束条件g_0,最后再由g_0分别指定不同的条件,如位置、尺寸,等。

    // Grid(网格),Bag(包),Constraints(限制)
    GridBagConstraints g_0=new GridBagConstraints();// 创建一个网格包约束条件g_0

    (二)、约束的“条件”

            以下为本文用到的网格包约束条件中的“条件”。

    1、坐标

            网格(grid)的x,y坐标(gridx、gridy

            坐标数值由0开始,并未由1开始。坐标的第0行,即为第一行。

    g_0.gridx=0;// x坐标1行位置,计算机以0为第一个
    g_0.gridy=0;// y坐标1列位置

    2、尺寸

            网格(grid)的宽度(width)、高度(height

            (尺寸数值非零开头,和坐标不同)

    g_0.gridwidth=1;// 宽度
    g_0.gridheight=2;// 高度

    3、填充(fill)属性

            (1)、默认方式为“居中(center)”

            (2)、上下,左右全:BOTH 。小写:both

            (3)、垂直:VERTICAL 。小写:vertical

            (4)、水平:HORIZONTAL 。小写:horizontal

    g_3.fill=GridBagConstraints.BOTH;// 按钮填充方式,全全填充
    g_3.fill=GridBagConstraints.VERTICAL;// 填充方式,垂直填充
    g_3.fill=GridBagConstraints.HORIZONTAL;// 填充方式,水平填充

    二、网格组布局说明

            网格组布局,可以更精确的布置窗体内各构建的位置。在一个窗体中使用网格组布局,布置“按钮”“标签”等构件时,可以先引入网格组布局包A,然后再根据自己的需求对A设置好相关的约束条件便可。“约束”内容,比如:坐标、尺寸、填充方式、方位、具体位置等。本文记录的约束内容为:坐标、尺寸和填充方式,其它约束条件下篇博文记录。

    (一)、源码A

    1、源码A说明

            展示网格组布局中约束条件的效果,先建立一个“窗体”,代码部分看源码A的方法way1,窗体的属性详细内容看way1部分代码。

            在“窗体”中添加3个“按钮”,具体为源码A中的方法way2部分代码,数据坐标分别为(0-0),(1-1),(2-2),(x-y坐标)。由于坐标数值由0开始,则前面的way2的三个坐标分别为(第一行-第一列),(第二行-第二列),(第三行-第三列)。

            源码A如下

    /**所想:
        网格组布局
    */
    
    /*
    	引入的包,以下的import等等
    */
    import java.awt.GridBagConstraints;// Constraints(限制) 
    import java.awt.GridBagLayout;//网格包
    import java.awt.Container;// 容器
    import java.awt.Color;// 颜色
    
    import javax.swing.JFrame; // 窗体
    import javax.swing.JButton;// 按钮
    import javax.swing.JPanel;// java面板
    
    class Demo{
    	JFrame f=new JFrame();// 设置主窗体
    	Container c;// 主容器
    
    	/*	
    		方法way1
    		创建一个新方法way1,设置窗体的规格
    		Content(容器),Pane(镶嵌),Grid(网格),Bag(包),Layout(布局)
    	*/
    	void way1(){
    		// Content(容器),Pane(镶嵌),layout(布局)
    		c=f.getContentPane();//容器c镶嵌于窗体中
    		c.setLayout(new GridBagLayout());// 容器c建立网格包布局
    		f.setSize(1000,800);// 设置窗体宽、高
    
    		// location(位置),Relative(相对于),括号里为某“组件”参数,为null时窗体在桌面居中显示
    		f.setLocationRelativeTo(null);// 窗体在桌面居中显示,null(空值)
    
    		// Default(默认),operation(操作),点击×程序便停止运行
    		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    	
    	/*
    		方法way2
    		创建一个新方法way2,将3个按钮限制于x,y坐标为1-1,2-2,3-3的布局中
    		主要使用:gridx及gridy,网格坐标的意思	
    	*/
    	void way2(){
    		// Grid(网格),Bag(包),Constraints(限制)
    		GridBagConstraints g_0=new GridBagConstraints();// 创建一个网格包约束条件g_0
    		g_0.gridx=0;// x坐标1行位置,计算机以0为第一个
    		g_0.gridy=0;// y坐标1列位置
    		c.add(new JButton("按钮1"),g_0);// 在容器里创建一个“按钮1”,约束条件“g_0”
    
    		GridBagConstraints g_1=new GridBagConstraints();// 约束“g_1”
    		g_1.gridx=1;// x坐标2行位置
    		g_1.gridy=1;// y坐标2列位置
    		c.add(new JButton("按钮2"),g_1);// 容器里加“按钮2”,约束为“g_1”
    		
    		GridBagConstraints g_2=new GridBagConstraints();//约束“g_2”
    		g_2.gridx=2;// x坐标3行位置
    		g_2.gridy=2;// y坐标3列位置
    		c.add(new JButton("按钮3"),g_2);// 容器里加“按钮3”,约束为“g_2”
    	}
    
    	public static void main(String[] args){
    		Demo d=new Demo();// 创建一个新类型d
    		d.way1();// 对d使用方法way1,创建一个窗体,包括布局参数等
    		d.way2();// 对d使用方法way2,容器里的按钮等
    
    		d.f.setVisible(true);// 类型d、窗体可见,为真
    	}
    }

    2、源码A运行效果

    (二)、源码B(源码A基础上添加方法way3、way4)

    1、源码B说明

            为更直观显示效果,创建一个矩阵,源码B中的方法way3。由多个“按钮”组成的,类似与表格的9行、9列的矩阵,效果由后面源码B运行效果图片看出。

            使用方法way4,显示坐标2-2、3-3、4-4、5-6。坐标(x-y)。具体效果由后面源码B的运行的含有“列”“行”的“按钮”显示。

    /**所想:
        网格组布局
    */
    
    /*
    	引入的包,以下的import等等
    */
    import java.awt.GridBagConstraints;// Constraints(限制) 
    import java.awt.GridBagLayout;//网格包
    import java.awt.Container;// 容器
    import java.awt.Color;// 颜色
    
    import javax.swing.JFrame; // 窗体
    import javax.swing.JButton;// 按钮
    import javax.swing.JPanel;// java面板
    
    class Demo{
    	JFrame f=new JFrame();// 设置主窗体
    	Container c;// 主容器
    
    	/*	
    		方法way1
    		创建一个新方法way1,设置窗体的规格
    		Content(容器),Pane(镶嵌),Grid(网格),Bag(包),Layout(布局)
    	*/
    	void way1(){
    		// Content(容器),Pane(镶嵌),layout(布局)
    		c=f.getContentPane();//容器c镶嵌于窗体中
    		c.setLayout(new GridBagLayout());// 容器c建立网格包布局
    		f.setSize(1000,800);// 设置窗体宽、高
    
    		// location(位置),Relative(相对于),括号里为某“组件”参数,为null时窗体在桌面居中显示
    		f.setLocationRelativeTo(null);// 窗体在桌面居中显示,null(空值)
    
    		// Default(默认),operation(操作),点击×程序便停止运行
    		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    	
    	/*
    		方法way2
    		创建一个新方法way2,将3个按钮限制于x,y坐标为1-1,2-2,3-3的布局中
    		主要使用:gridx及gridy,网格坐标的意思	
    	*/
    	void way2(){
    		// Grid(网格),Bag(包),Constraints(限制)
    		GridBagConstraints g_0=new GridBagConstraints();// 创建一个网格包约束条件g_0
    		g_0.gridx=0;// x坐标1行位置,计算机以0为第一个
    		g_0.gridy=0;// y坐标1列位置
    		c.add(new JButton("按钮1"),g_0);// 在容器里创建一个“按钮1”,约束条件“g_0”
    
    		GridBagConstraints g_1=new GridBagConstraints();// 约束“g_1”
    		g_1.gridx=1;// x坐标2行位置
    		g_1.gridy=1;// y坐标2列位置
    		c.add(new JButton("按钮2"),g_1);// 容器里加“按钮2”,约束为“g_1”
    		
    		GridBagConstraints g_2=new GridBagConstraints();//约束“g_2”
    		g_2.gridx=2;// x坐标3行位置
    		g_2.gridy=2;// y坐标3列位置
    		c.add(new JButton("按钮3"),g_2);// 容器里加“按钮3”,约束为“g_2”
    	}
    
    	/*
    		方法way4
    		创建三个按钮,按钮名称及x、y轴的位置
    		按钮1	2-2
    		按钮2	3-3
    		按钮3	4-4
    		按钮4	5-6
    	*/
    	void way4(){
    		GridBagConstraints g_1=new GridBagConstraints();// 创建一个网格包约束条件g_1
    		g_1.gridx=1;// x坐标第2行,0开始
    		g_1.gridy=1;// y坐标第2列
    		c.add(new JButton("按钮1,坐标2-2"),g_1);// 容器c里添加“按钮1”,约束为“g_1”
    
    		GridBagConstraints g_2=new GridBagConstraints();// 创建一个网格包约束条件g_2
    		g_2.gridx=2;// x坐标第3行,0开始
    		g_2.gridy=2;// y坐标第3列
    		c.add(new JButton("按钮2,坐标3-3"),g_2);// 容器c里添加“按钮2”,约束为“g_2”
    
    		GridBagConstraints g_3=new GridBagConstraints();// 创建一个网格包约束条件g_3
    		g_3.gridx=3;// x坐标第4行,0开始数
    		g_3.gridy=3;// y坐标第4列
    		c.add(new JButton("按钮3,坐标4-4"),g_3);// 容器c里添加“按钮3”,约束为“g_4”
    
    		GridBagConstraints g_4=new GridBagConstraints();// 创建一个网格包约束条件g_4
    		g_4.gridx=4;// x坐标5行,0开始数
    		g_4.gridy=5;// y坐标6列
    		c.add(new JButton("按钮4,坐标5-6"),g_4);// 容器c里添加“按钮4”,约束为“g_4”
    	}
    
    	/*
    		方法way3
    		创建一个方法way3,创建一个按钮矩阵,类似表格,用以
    	对照后面放进去的其他“限制”按钮,设置一个行数与列数相同
    	的矩阵,以供参考。设置行数列数不对等显示按钮会有些按钮显示
    	错位。
    	*/
    	void way3(){
    		for(int i_0=0;i_0<9;i_0++){
    			// Grid(网格),Bag(包),Constraints(限制)
    			GridBagConstraints g_0=new GridBagConstraints();// 创建一个网格包约束条件g_0
    			g_0.gridx=i_0;
    			g_0.gridy=0;// y轴第一列
    			c.add(new JButton(i_0+1+"行"),g_0);// 添加i+1个按钮,横向排序
    		}
    		for(int i_1=1;i_1<9;i_1++){
    			GridBagConstraints g_1=new GridBagConstraints();// 说明参考上
    			g_1.gridx=0;
    			g_1.gridy=i_1;// x轴第一列
    			c.add(new JButton(i_1+1+"列"),g_1);
    		}
    	}
    
    
    	public static void main(String[] args){
    		Demo d=new Demo();// 创建一个新类型d
    		d.way1();// 对d使用方法way1,创建一个窗体,包括布局参数等
    		//d.way2();// 对d使用方法way2,容器里的按钮等
    		d.way3();// 方法way3,按钮矩阵,参照用
    		d.way4();// 方法way4,坐标分别为2-2,3-3,4-4的“按钮”
    
    		d.f.setVisible(true);// 类型d、窗体可见,为真
    	}
    }

    2、源码B的运行效果

    (三)、源码C(源码B的基础上添加方法way4)

    1、源码C说明

            源码C方法way4为三个“按钮”相对于方法way2多添加了构件的“尺寸”约束条件。具体可观察下方的源码C的运行效果。按钮1和按钮2的坐标、尺寸的约束数据作为按钮的名称。各使用矩形框(a、b、c、d、e、f)框选了按钮所对应的坐标及尺寸。

           为更直观看到效果,单独对按钮3(名称:“0.0”)另外添加了一个红色的“标签”背景,以方便看出按钮3(名称:“0.0”)在后面fill属性约束条件下的表现效果。 对于按钮3名称选择为“0.0”,为更直观的显示,按钮的名称太长容易影响尺寸、坐标的判断。由源码C方法way4中的数据按钮3(名为:“0.0”)的坐标为4-4,尺寸为2-3。源码C中的按钮3(“0.0”)默认状态为上下左右居中。对于按钮3的fill属性(水平填充、垂直填充、上下左右填充)的相关代码已写于源码C方法way4中,暂处于注释状态,用于后面说明使用。

    /**所想:
        网格组布局
    */
    
    /*
    	引入的包,以下的import等等
    */
    import java.awt.GridBagConstraints;// Constraints(限制) 
    import java.awt.GridBagLayout;//网格包
    import java.awt.Container;// 容器
    import java.awt.Color;// 颜色
    
    import javax.swing.JFrame; // 窗体
    import javax.swing.JButton;// 按钮
    import javax.swing.JPanel;// java面板
    
    class Demo{
    	JFrame f=new JFrame();// 设置主窗体
    	Container c;// 主容器
    
    	/*	
    		方法way1
    		创建一个新方法way1,设置窗体的规格
    		Content(容器),Pane(镶嵌),Grid(网格),Bag(包),Layout(布局)
    	*/
    	void way1(){
    		// Content(容器),Pane(镶嵌),layout(布局)
    		c=f.getContentPane();//容器c镶嵌于窗体中
    		c.setLayout(new GridBagLayout());// 容器c建立网格包布局
    		f.setSize(1000,800);// 设置窗体宽、高
    
    		// location(位置),Relative(相对于),括号里为某“组件”参数,为null时窗体在桌面居中显示
    		f.setLocationRelativeTo(null);// 窗体在桌面居中显示,null(空值)
    
    		// Default(默认),operation(操作),点击×程序便停止运行
    		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    	
    	/*
    		方法way2
    		创建一个新方法way2,将3个按钮限制于x,y坐标为1-1,2-2,3-3的布局中
    		主要使用:gridx及gridy,网格坐标的意思	
    	*/
    	void way2(){
    		// Grid(网格),Bag(包),Constraints(限制)
    		GridBagConstraints g_0=new GridBagConstraints();// 创建一个网格包约束条件g_0
    		g_0.gridx=0;// x坐标1行位置,计算机以0为第一个
    		g_0.gridy=0;// y坐标1列位置
    		c.add(new JButton("按钮1"),g_0);// 在容器里创建一个“按钮1”,约束条件“g_0”
    
    		GridBagConstraints g_1=new GridBagConstraints();// 约束“g_1”
    		g_1.gridx=1;// x坐标2行位置
    		g_1.gridy=1;// y坐标2列位置
    		c.add(new JButton("按钮2"),g_1);// 容器里加“按钮2”,约束为“g_1”
    		
    		GridBagConstraints g_2=new GridBagConstraints();//约束“g_2”
    		g_2.gridx=2;// x坐标3行位置
    		g_2.gridy=2;// y坐标3列位置
    		c.add(new JButton("按钮3"),g_2);// 容器里加“按钮3”,约束为“g_2”
    	}
    
    	/*
    		方法way4
    		创建三个按钮,按钮名称及x、y轴的位置
    		按钮1	2-2
    		按钮2	3-3
    		按钮3	4-4
    		按钮4	5-6
    	*/
    	void way4(){
    		GridBagConstraints g_1=new GridBagConstraints();// 创建一个网格包约束条件g_1
    		g_1.gridx=1;// x坐标第2行,0开始
    		g_1.gridy=1;// y坐标第2列
    		c.add(new JButton("按钮1,坐标2-2"),g_1);// 容器c里添加“按钮1”,约束为“g_1”
    
    		GridBagConstraints g_2=new GridBagConstraints();// 创建一个网格包约束条件g_2
    		g_2.gridx=2;// x坐标第3行,0开始
    		g_2.gridy=2;// y坐标第3列
    		c.add(new JButton("按钮2,坐标3-3"),g_2);// 容器c里添加“按钮2”,约束为“g_2”
    
    		GridBagConstraints g_3=new GridBagConstraints();// 创建一个网格包约束条件g_3
    		g_3.gridx=3;// x坐标第4行,0开始数
    		g_3.gridy=3;// y坐标第4列
    		c.add(new JButton("按钮3,坐标4-4"),g_3);// 容器c里添加“按钮3”,约束为“g_4”
    
    		GridBagConstraints g_4=new GridBagConstraints();// 创建一个网格包约束条件g_4
    		g_4.gridx=4;// x坐标5行,0开始数
    		g_4.gridy=5;// y坐标6列
    		c.add(new JButton("按钮4,坐标5-6"),g_4);// 容器c里添加“按钮4”,约束为“g_4”
    	}
    
    	/*
    		方法way3
    		创建一个方法way3,创建一个按钮矩阵,类似表格,用以
    	对照后面放进去的其他“限制”按钮,设置一个行数与列数相同
    	的矩阵,以供参考。设置行数列数不对等显示按钮会有些按钮显示
    	错位。
    	*/
    	void way3(){
    		for(int i_0=0;i_0<9;i_0++){
    			// Grid(网格),Bag(包),Constraints(限制)
    			GridBagConstraints g_0=new GridBagConstraints();// 创建一个网格包约束条件g_0
    			g_0.gridx=i_0;
    			g_0.gridy=0;// y轴第一列
    			c.add(new JButton(i_0+1+"行"),g_0);// 添加i+1个按钮,横向排序
    		}
    		for(int i_1=1;i_1<9;i_1++){
    			GridBagConstraints g_1=new GridBagConstraints();// 说明参考上
    			g_1.gridx=0;
    			g_1.gridy=i_1;// x轴第一列
    			c.add(new JButton(i_1+1+"列"),g_1);
    		}
    	}
    
    	/*
    		方法way05
    		按钮 添加约束条件,指定坐标、尺寸
    		填充(fill)属性,全填充(BOTH),垂直(vertical)填充,水平(horizontal)填充
    		g_3添加一面板,以对照观察用
    	*/
    	void way5(){
    		GridBagConstraints g_1=new GridBagConstraints();// 创建一个网格包约束条件g_1
    		g_1.gridx=1;// x坐标
    		g_1.gridy=1;// y坐标
    		g_1.gridwidth=1;// 宽度
    		g_1.gridheight=2;// 高度
    		//g_1.fill=GridBagConstraints.BOTH;// 按钮填充方式,全全填充
    		c.add(new JButton("按钮1,坐标1-1,宽1高2"),g_1);// 添加按钮,约束对象g_1
    
    		GridBagConstraints g_2=new GridBagConstraints();// 创建一个网格包约束条件g_2
    		g_2.gridx=3;// x坐标
    		g_2.gridy=1;// y坐标
    		g_2.gridwidth=3;// 宽度
    		g_2.gridheight=1;// 高度
    		//g_2.fill=GridBagConstraints.BOTH;// 按钮填充方式,全全填充
    		c.add(new JButton("按钮2,坐标3-1,宽3高1"),g_2);// 容器c里添加按钮,约束为g_2
    
    		GridBagConstraints g_3=new GridBagConstraints();// 创建一个网格包约束条件g_3
    		g_3.gridx=4;// x坐标
    		g_3.gridy=4;// y坐标
    		g_3.gridwidth=2;// 宽度
    		g_3.gridheight=3;// 高度
    		//g_3.fill=GridBagConstraints.BOTH;// 按钮填充方式,全全填充
    		//g_3.fill=GridBagConstraints.VERTICAL;// 填充方式,垂直填充
    		//g_3.fill=GridBagConstraints.HORIZONTAL;// 填充方式,水平填充
    		c.add(new JButton("0.0"),g_3);// 容器c里添加按钮3,约束为g_3
    
    		g_3.fill=GridBagConstraints.BOTH;// 给g_3约束条件,全填充
    		JPanel p_1=new JPanel();// 新建面板(Panel),需要在前面添加import javax.swing.JPanel;
    		p_1.setBackground(Color.red);// 面板p_1的背景(颜色),需要在前面添加import java.awt.Color;
    		c.add(p_1,g_3);// 容器c里添加面板p_1,约束条件为g_3
    	}
    
    	public static void main(String[] args){
    		Demo d=new Demo();// 创建一个新类型d
    		d.way1();// 对d使用方法way1,创建一个窗体,包括布局参数等
    		//d.way2();// 对d使用方法way2,容器里的按钮等
    		d.way3();// 方法way3,按钮矩阵,参照用
    		//d.way4();// 方法way4,坐标分别为2-2,3-3,4-4的“按钮”
    
    		d.way5();// 对d使用方法way5,在方法way4的基础上添加了尺寸宽和高
    
    		d.f.setVisible(true);// 类型d、窗体可见,为真
    	}
    }

    2、源码C的运行效果

    (四)、源码C关于fill属性的运行效果

    1-1、全填充(BOTH):

            将源码C的方法way4中显示按钮3(名称:“0.0”)的上下左右填充(全填充)效果。

            关键词:BOTH

            将源码C中方法way4中的的如下代码

    //g_3.fill=GridBagConstraints.BOTH;// 按钮填充方式,全全填充

            取消注释为如下

    g_3.fill=GridBagConstraints.BOTH;// 按钮填充方式,全全填充

    1-2、按钮3(名为:0.0)全填充(BOTH)的运行效果:

    2-1、垂直填充(VERTICAL):

            与上1-1同理,将源码C的方法way4中显示按钮3(名称:“0.0”)的垂直填充效果。

            关键词:VERTICAL

            将源码C中方法way4中的的如下代码

    //g_3.fill=GridBagConstraints.VERTICAL;// 填充方式,垂直填充

            取消注释为如下

    g_3.fill=GridBagConstraints.VERTICAL;// 填充方式,垂直填充

    2-2、按钮3(名为:“0.0”)垂直填充(VERTICAL)的运行效果:

    3-1、水平填充(HORIZONTAL):

            与上1-1同理,将源码C的方法way4中显示按钮3(名称:“0.0”)的水平填充效果。

            关键词:HORIZONTAL

            将源码C中方法way4中的的如下代码

    //g_3.fill=GridBagConstraints.HORIZONTAL;// 填充方式,水平填充

            取消注释为如下

    g_3.fill=GridBagConstraints.HORIZONTAL;// 填充方式,水平填充

    3-2、按钮3(名为:“0.0”)水平填充(HORIZONTAL)的运行效果:

    三、定位日期

    2022.3.8;23:16;因时间问题未编写完,第二天继续

    2022.3.9;21:29

    展开全文
  • Java 网格布局

    2021-02-12 13:38:35
    /** 网络布局* */package ...import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;class gridlayout extends JFrame{int size=6;private JButton jbtn[]=new JButton[size];public...
  • //创建网格组布局 c.setLayout(gridbag);//给容器设置网格组布局 GridBagConstraints gbc=new GridBagConstraints();//创建组件约束对象 gbc.gridx=0; gbc.gridy=0; gbc.gridwidth=5; gbc....
  • 主要介绍了Java Swing GridBagLayout网格布局的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 主要介绍了JavaSwing GridLayout 网格布局的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • GridBagLayout类是一个灵活的布局管理器,GridBagLayout类的对象维持一个动态的矩形单元网格,然后我们可以把组件放进一个或多个矩形单元网格,组件大就多放几个,组件小就少放几个。 而每个组件,要占几个网格单元...
  • java:布局方法(网格布局

    千次阅读 2021-04-22 00:42:38
    网格布局简单说明关键代码流程图例子说明默认情况源码运行效果其他情况 简单说明 网格布局,用常说的几行几列来理解便可,按几行几列分成多个大小统一的组件(这里选“按钮”)。一个窗体,在里边布置“按钮”用网格...
  • 网格组布局Java较为复杂的布局,虽然这又背于Java简单的初衷。网格组布局十分优雅,组件可以随着窗口的调整自动放大或缩小。 要有效地使用网格组布局,必须自定义GridBagConstraints与其组件关联的一个或多个对象...
  • java网格组布局之GBC类

    2014-06-26 03:00:04
    java现在流行的是什么布局,还是大家都yiqide
  • JButtonadd=newJButton("添加... } } } } 以上是我代码中的一段,我在网格布局中添加一个Item和一个按钮。我希望Edit中可以点击一次鼠标就添加一个Item,但是我点击一次按钮网格布局竟然变成了两列,这是为什么? 展开
  • JAVA 网格布局管理器

    2021-02-27 18:56:56
    //网格布局管理器import java.awt.*;import javax.swing.*;public class Jiemian3 extendsJFrame{//定义组件JButton[] an = {null,null,null,null,null,null,null,null};public static voidmain(String[] args){//...
  • Java Swing面板布局之网格布局GridLayout

    千次阅读 2022-01-22 14:49:02
    GridLayout,网格布局管理器。它以矩形网格形式对容器的组件进行布置,把容器按行列分成大小相等的矩形网格,一个网格中放置一个组件,组件宽高自动撑满网格。 使容器中的各组件呈M行×N列的网格状分布。 网格每列...
  • Java网格布局和JPanel

    2021-01-14 11:16:46
    我已经创建了一个网格布局,并且我使用JPanel在网格中输入按钮和文本,但是如果我的文本很长,一切似乎都会改变大小。有人可以帮助我如何防止这种情况发生?这是我的代码:package JFrameTester;import java.awt.*;...
  • JAVA使用网格组布局的一个小问题

    千次阅读 2018-12-24 19:22:17
    import java.awt.Container; import java.awt.Frame; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; impor...
  • 计算器程序使用了网格布局来排列计算器按钮。当缩放窗口时,计算器按钮将随之变大或者变小,但所有的按钮尺寸始终保持一致。
  • GridBagLayout布局管理器:主要是关于java中GridBagLayout的布局,该文档详细描写的GridBagLayout的具体用法。
  • 网格组布局管理器

    2022-04-14 12:35:27
    package 网格布局管理器; import java.awt.Container; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.*; import Swing程序设计.GildLayout; public class gridxgridy...
  • java网格包GridBagLayout布局管理器专题.pdf
  • java写的一个简单的计算器,包含源码、素材、说明 用java写的一个简单的计算器,包含源码、素材、说明 用java写的一个简单的计算器,包含源码、素材、说明 用java写的一个简单的计算器,包含源码、素材、说明
  • GridBagLayout(网格布局管理器)是在网格基础上提供复杂的布局,是最灵活、 最复杂的布局管理器。GridBagLayout 不需要组件的尺寸一致,允许组件扩展到多行多列。每个 GridBagLayout 对象都维护了一动态的矩形...
  • 我有一个边框布局,我想在中心部分添加网格布局.但是,我无法声明网格,然后将其添加到我的中心边框.我怎样才能做到这一点?public Liability_Calculator(String s){super(s);setSize(325,200);c = getContentPane();c....
  • java网格包GridBagLayout布局管理器专题借鉴.pdf
  • java网格包GridBagLayout布局管理器专题的分析.pdf
  • GridBagLayout网格布局管理器
  • 网格布局特点:l 使容器中的各组件呈M行×N列的网格状分布。l 网格每列宽度相同,等于容器的宽度除以网格的列数。l 网格每行高度相同,等于容器的高度除以网格的行数。l 各组件的排列方式为:从上到下,从左到右。l ...
  • * 网格布局* GridLayout* 图形界面* 对象数组 new new*/package com.test1;//package com.GUI;import java.awt.*;import javax.swing.*;public class Demo8_4 extends JFrame//继承JFrame类{int size=8; //变量,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,126
精华内容 8,450
关键字:

java网格组布局