Java学习 布局管理器之GridLayout(网格布局)

GridLayout( 网格布局)

具体请看 官方JavaApi: java.awt.GridLayout

GridLayout 将容器切割为棋盘一样m行n列的网格,每个网格可以放置一个组件,添加到容器的组件从左向右自上而下依次放置

GridLayout 最大的特点是放置的组件自动占据网格的整个区域,每个组件的大小相同,不能改变组件大小,只能改变组件之间的水平和垂直间隔。

GridLayout类的常用构造方法如下:
GridLayout(): 构建一个一行一列的GridLayout对象。
GridLayout(int rows, int cols): 用指定行数和列数去构建GridLayout对象。
GridLayout(int rows, int cols, int hgap, int vgap): 指定行数、列数、水平间隔和垂直间隔去构建GridLayout对象。

// 构建一个一行一列的GridLayout对象。
 GridLayout(): 

// 用指定行数和列数去构建GridLayout对象。
 GridLayout(int rows, int cols); 

// 用指定行数、列数、水平间隔和垂直间隔去构建GridLayout对象。
 GridLayout(int rows, int cols, int hgap, int vgap);

示例1 如下
功能描述:本程序将当前JFrame设置为3行3列的GridLayout布局,然后依次放人9个按钮

package 、、、;
import javax.swing.*;
import java.awt.*;
public class GridLayoutTest extends JFrame {
	public GridLayoutTest() {
		setSize(300,180);   // 设置窗口大小 
		setLayout(new GridLayout(3,3)); ///  设置网格布局并指定为 3行3列
		for(int i=1 ; i<=9 ;i++) {  /// 加入9个按钮 按窗口大小平均分配
			add(new JButton(""+i));
		}
	}
 public static void main(String[] args) {
	 GridLayoutTest win = new GridLayoutTest();
	 win.setTitle("GirdLayout 网格布局");
	 win.setLocationRelativeTo(null);/// 设置窗口将置于屏幕的中央
	 win.setDefaultCloseOperation(EXIT_ON_CLOSE);///设置关闭窗口界面则结束程序
	 win.setVisible(true); /// 设置为可视(true)  若为false则不可视 
}
}

运行图如下:


需注意的有
若组件数超过网格设定的个数,则布局管理器会自动增加网格个数,原则是保持行数不变,增加列数来完成布局

运行图如下:

示例2 利用网格布局做一个简单计算器

package ...;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class GridLayoutTest extends JFrame {
	String[] s = {"AC","+/-","%","/","7","8","9","*","4","5","6","-","1","2","3","+","0","sqrt",".","="};

	public GridLayoutTest() {
		setSize(350,220);   // 设置窗口大小 
		JTextArea jt = new  JTextArea(2,1); ///new 一个文本框
		//new 一个面板 设置为网格布局并指定为 5行4列 水平间隔为4 垂直间隔为5
		 JPanel panel = new JPanel(new GridLayout(5,4,4,5));  
		setLayout(new BorderLayout()); 
		for(int i=0 ; i<s.length ;i++) {  //加入计算器按钮 按窗口大小平均分配
			panel.add(new JButton(s[i]));
		}
		 getContentPane().add(jt,BorderLayout.NORTH); ///将文本框放在窗口 NORTH
		 getContentPane().add(panel,BorderLayout.CENTER); //将面板放在窗口 CENTER
		 setTitle("GirdLayout计算器布局");///标题
		 setLocationRelativeTo(null);/// 设置窗口将置于屏幕的中央
		 setDefaultCloseOperation(EXIT_ON_CLOSE);///设置关闭窗口界面则结束程序
		 setVisible(true); /// 设置为可视(true)  若为false则不可视 
	}
 public static void main(String[] args) {
	 GridLayoutTest win = new GridLayoutTest();
	
}
}


运行图如下:

简单总结:
1、将容器像棋盘一样进行m行n列的网格分布
2、网格每行高度(每列宽度)相同,等于容器的高度(宽度)除以网格的行数(列数)
3、不能改变组件大小只能改变组件之间的水平和垂直间隔
4、添加到容器的组件 从左向右 自上而下 依次放置
5、当容器大小发生改变时,各组件的相对位置不变,大小会改变。

  • 8
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
三十一、Java 图形化界面设计——布局管理器GridLayout网格布局网格布局特点: l 使容器中的各组件呈 M 行×N 列的网格状分布。 l 网格每列宽度相同,等于容器的宽度除以网格的列数。 l 网格每行高度相同,等于容器的高度除以网格的行数。 l 各组件的排列方式为:从上到下,从左到右。 l 组件放入容器的次序决定了它在容器中的位置。 l 容器大小改变时,组件的相对位置不变,大小会改变。 l 设置网格布局行数和列数时,行数或者列数可以有一个为零。若 rows 为 0,cols 为 3,则列数固定为 3,行数不限,每行只能放 3 个控 件或容器。若 cols 为 0,rows 为 3,则行数固定为 3,列数不限,且每 行必定有控件,若组件个数不能整除行数,则除去最后一行外的所有 行组件个数为:Math.ceil(组件个数/rows)。 Math.ceil(double x):传回不小于 x 的最小整数值。比如行数为 3,组件 数为 13 个,则 Math.ceil(13/3)=5,即第一行,第二行组件数各为 5 个, 剩下的组件放在最后一行。 3、管路敷设技术 通1过管线0不仅2222可以解决吊顶层配置不规范高中资料试卷问题22,而且可保障2323各类管路习题到位。在管路敷设过程1中,要加强看255222护1关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置.保护层防腐跨接地线弯曲半径标高等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内,强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。 4、电气课件中调试技术 对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料试卷相互作用与相互关系,根据生产工艺高中资料试卷要求,对电气设备进行空载与带负荷下高中资料试卷调控试验;对设备进行调整使其在正常工况下与过度工作下都可以正常工作;对于继电保护进行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启动方案;对整套启动过程中高中资料试卷电气设备进行调试工作并且进行过关运行高中资料试卷技术指导。对于调试过程中高中资料试卷技术问题,作为调试人员,需要在事前掌握图纸资料、设备制造厂家出具高中资料试卷试验报告与相关技术资料,并且了解现场设备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。 5、电气设备调试高中资料试卷技术 电力保护装置调试技术,电力保护高中资料试卷配置技术是指机组在进行继电保护高中资料试卷总体配置时,需要在最大限度内来确保机组高中资料试卷安全,并且尽可能地缩小故障高中资料试卷破坏范围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必要高中资料试卷突然停机。因此,电力高中资料试卷保护装置调试技术,要求电力保护装置做到准确灵活。对于差动保护装置高中资料试卷调试技术是指发电机一变压器组在发生内部故障时,需要进行外部电源高中资料试卷切除从而采用高中资料试卷主要保护装置。 l 若组件数超过网格设定的个数,则布局管理器会自动增加网格个数, 原则是保持行数不变。 构造方法摘要 GridLayout(): 创建具有默认值的网格布局,即每个组件占 据一行一列。 GridLayout(int rows, int cols) : 创建具有指定行数和列数的网格布局。Rows 为行数,cols 为列数。 GridLayout(int rows, int cols, int hgap, int vgap) : 创建具有指定行数、列数以及组件水平、纵向一定间距的 网格布局。 方法摘要 int getColumns() :获取此布局中的列数。 3、管路敷设技术 通1过管线0不仅2222可以解决吊顶层配置不规范高中资料试卷问题22,而且可保障2323各类管路习题到位。在管路敷设过程1中,要加强看255222护1关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置.保护层防腐跨接地线弯曲半径标高等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内,强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。 4、电气课件中调试技术 对全部高中资料试卷电气设备,在安
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值