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 垂直间隔为5JPanel 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); ///将文本框放在窗口 NORTHgetContentPane().add(panel,BorderLayout.CENTER); //将面板放在窗口 CENTERsetTitle("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、当容器大小发生改变时,各组件的相对位置不变,大小会改变。

Java学习 布局管理器之GridLayout(网格布局)相关推荐

  1. 【Java AWT 图形界面编程】LayoutManager 布局管理器 ④ ( GridLayout 网格布局 | GridBagLayout 网格包布局 )

    文章目录 一.GridLayout 网格布局 二.GridLayout 构造函数 三.GridLayout 网格布局代码示例 四.GridBagLayout 网格包布局 一.GridLayout 网格 ...

  2. java 网格布局管理器,Java图形化界面设计——布局管理器之GridLayout(网格布局)...

    网格布局特点: l  使容器中的各组件呈M行×N列的网格状分布. l  网格每列宽度相同,等于容器的宽度除以网格的列数. l  网格每行高度相同,等于容器的高度除以网格的行数. l  各组件的排列方式 ...

  3. 安卓APP_ 布局(5) —— GridLayout网格布局

    摘自:安卓APP_ 布局(5) -- GridLayout网格布局 作者:丶PURSUING 发布时间: 2021-04-12 00:08:31 网址:https://blog.csdn.net/we ...

  4. java常用布局管理器(流布局管理器、边界布局管理器、网格布局管理器)

    在Swing中,每个组件在容器中都有一个具体的位置大小.而在容器中摆放各种组件时很难判断其具体位置和大小,使用布局管理器比程序员直接在容器中控制Swing组件的位置和大小方便得多,可以更加有效地处理整 ...

  5. java计算器布局设计_Java图形化界面设计——布局管理器之GridLayout(网格布局) 之计算器...

    代码如下: import java.awt.*; import javax.swing.*; public class GridFrame extends JFrame { // 定义字符串数组,为按 ...

  6. FlowLayout流式布局管理器与网格布局GridLayout

    总结 1.继承JFrame类 2.在最上方定义组件 3.在构造方法中创建组件 4.在构造方法中添加组件 5.设置窗体属性 6.显示窗体 7.在主函数中创建对象 所有布局管理器都可以添加任意组件 (滚动 ...

  7. Qt布局管理器之表单布局(QFormLayout)

    QFormLayout顾名思义,主要用来做表单的输入及显示.和前面讲到的QBoxLayout.QGridLayout类似,QFormLayout可以插入widget.layout,直接用QGridLa ...

  8. 布局管理器android,Android课程---布局管理器之相对布局(一)

    下面示例的是在父容器里如何设置按钮的位置,难度:***,重点是找到一个主按钮,设置它的id,然后根据它来设置其他按钮在父容器的位置. 代码示例: android:layout_width=" ...

  9. Java GUI(图形用户界面)-----GridLayout(网格布局管理器)详解

    GridLayout(网格布局管理器) 可以把容器分成n行m列大小相等的网格,每个网格放置一个组件,按照从左往右,从上往下的顺序依次添加,放置在Gird Layout布局管理器的组件将自动占据网格的整 ...

最新文章

  1. 小波的秘密9_图像处理应用:图像增强
  2. 说一下StoreBoard和纯代码编程各有什么好处吧
  3. 算法竞赛入门经典(第二版) | 例题4-5 追踪电子表格中的单元格 (UVa512,Spreadsheet Tracking,World Finals)(解法一)
  4. textarea长度限制
  5. Box2DWeb_03之Shape
  6. [转帖]Beyond Compare如何进行二进制比较
  7. Java变量的默认值和初始化
  8. LayaAir UI 组件 # Image 位图、Label 标签
  9. 201507152326_《Javascript实现跨域有4种方法——介绍jsonp和html5方法》
  10. 网易云linux版本如何安装包,网易云音乐Linux版提供64位和32位ubuntu16.04安装包
  11. Qt QDir用法及实战案例
  12. Java项目:个人银行账户管理系统课程设计报告
  13. 笔记本电脑dns电脑服务器未响应如何处理,提示dns电脑服务器未响应如何处理?...
  14. 基于51单片机温度火灾烟雾报警器
  15. I2S、TDM详细介绍
  16. 虎书学习笔记3:图形学基础数学(正交基与坐标系、二维梯度)
  17. 小猫小狗玩数学-第14届蓝桥杯STEMA测评Scratch真题精选
  18. 菲尔人格测试今天你测了吗?
  19. CPU后面的字母注解
  20. 在OpenWRT上运行Sakura Frp

热门文章

  1. 1049:晶晶赴约会 题解 信息学奥赛 NOIP
  2. 华为三层交换机配置DHCP服务
  3. 错误代码0x80004005解决
  4. TypeError: In order to allow non-dict objects to be serialized set the safe parameter to False.
  5. 我的京东面试之旅,考试与面试撞期我该如何抉择?
  6. HPU272 wzy的大冒险——出发前的清理(米勒罗宾板子)
  7. python 波浪号用法,在R编程语言中使用〜(波浪号)
  8. 手把手教你备考中级软件设计师
  9. 025:求特殊自然数
  10. P1124 文件压缩