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(doublex):传回不小于x的最小整数值。比如行数为3,组件数为13个,则Math.ceil(13/3)=5,即第一行,第二行组件数各为5个,剩下的组件放在最后一行。

l若组件数超过网格设定的个数,则布局管理器会自动增加网格个数,原则是保持行数不变。

构造方法摘要

创建具有指定行数和列数的网格布局。Rows为行数,cols为列数。

创建具有指定行数、列数以及组件水平、纵向一定间距的网格布局。

方法摘要

int

void

实例一:

importjavax.swing.*;

importjava.awt.*;

publicclassGridLayoutDemoextendsJFrame{

publicGridLayoutDemo(){

setLayout(newGridLayout(0,2));//设置为网格布局,未指定行数

setFont(newFont("Helvetica",Font.PLAIN,14));

getContentPane().add(newJButton("Button1"));

getContentPane().add(newJButton("Button2"));

getContentPane().add(newJButton("Button3"));

getContentPane().add(newJButton("Button4"));

getContentPane().add(newJButton("Button5"));

}

publicstaticvoidmain(Stringargs[]){

GridLayoutDemof=newGridLayoutDemo();

f.setTitle("GridWindowApplication");

f.pack();

f.setVisible(true);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setLocationRelativeTo(null);//让窗体居中显示

程序结果如下图所示:

实例二:布局一个简单的计算器

思路:对窗体应用边界布局,在NORTH上放置一个文本框,在CENTER上放置一个面板,面板上放置计算器的相应按钮

//GridFrame.Java

classGridFrameextendsJFrame{

//定义面板,并设置为网格布局,4行4列,组件水平、垂直间距均为3

JPanelp=newJPanel(newGridLayout(4,4,3,3));

JTextAreat=newJTextArea();//定义文本框

//定义字符串数组,为按钮的显示文本赋值

//注意字符元素的顺序与循环添加按钮保持一致

Stringstr[]={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};

publicGridFrame(Strings){

super(s);//为窗体名称赋值

setLayout(newBorderLayout());//定义窗体布局为边界布局

btn=newJButton[str.length];//创建按钮数组

//循环定义按钮,并添加到面板中

for(inti=0;i

btn[i]=newJButton(str[i]);

p.add(btn[i]);

//将文本框放置在窗体NORTH位置

getContentPane().add(t,BorderLayout.NORTH);

//将面板放置在窗体CENTER位置

getContentPane().add(p,BorderLayout.CENTER);

setVisible(true);

setSize(250,200);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLocationRelativeTo(null);//让窗体居中显示

publicstaticvoidmain(String[]args){

GridFramegl=newGridFrame("网格布局计算机!");

程序执行结果如下图:

注意:这里一定要体会通过字符串数组和循环添加按钮的方法,以后添加菜单以及事件处理均采用这种方法,这种方法的好处在于,如果需要修改按钮顺序,直接修改字符串就可以了。而不需要改动添加按钮的代码。

THE END
1.GridBagLayout网格组布局OSCHINA由GridBagLayout 类实现的布局管理器称为网格组布局管理器,它实现了一个动态的矩形网格,这个矩形网格由无数个矩形单元组成,每个组件可以占用一个或多个这样的单元格。 在向由 GridBagLayout 类管理的容器中添加组件时,需要为每个组件创建一个与之关联的 GridBagConstraints 类的对象,通过该类中的属性可以设置组件的布局...https://my.oschina.net/kaipan/blog/160669
2.GridLayout(Java2PlatformSE5.0)从类java.lang.Object 继承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait构造方法详细信息GridLayoutpublic GridLayout()创建具有默认值的网格布局,即每个组件占据一行一列。 从以下版本开始: JDK1.1GridLayout...http://jszx-jxpt.cuit.edu.cn/javaapi/java/awt/GridLayout.html
3.《Java项目开发实训教程》(宗哲玲)305“对话面板”(采用边界布局)放置“外部分割面板”(采用左右分割)左侧:放置“内部分割”面板(采用上下分割)右侧:放置“表格面板”上方:“数据面板”(采用绝对布局,放置各组件)下方:“按钮面板”(采用网格包布局,放置各按钮)three3.方法设计构造方法UserUpkeep()用于完成“用户维护”界面的初始化工作,界面布局设计如下...https://max.book118.com/html/2022/0807/5243130004004321.shtm
1.JAVA网格布局如何设置网格大小mob64ca12e6b22d的技术博客JAVA网格布局如何设置网格大小 在JAVA Swing中,网格布局是一种常见的布局管理器,可以将组件以网格的形式排列。每个组件都可以占据一个或多个网格单元,并且可以根据需要进行动态调整和调整大小。 在本文中,我们将介绍如何使用JAVA网格布局设置网格大小,并提供一个具体的示例来解决一个问题。 https://blog.51cto.com/u_16213391/7500056
2.JavaSwingGridLayout网格布局的实现代码java网格布局资源网格布局 Swing GridLayout 67 浏览量2020-08-25上传评论收藏56KBPDF举报 立即下载开通VIP(低至0.43/天) 买1年送1年 JavaSwing GridLayout 网格布局的实现代码 JavaSwing GridLayout 网格布局是JavaSwing库中的一种常用布局管理器,用于在容器中排列组件。下面将详细介绍JavaSwing GridLayout 网格布局的实现代码。 我...https://download.csdn.net/download/weixin_38587130/12744640
3.Java开发GUI之GridLayout网格布局Java开发GUI之GridLayout网格布局 GridLayout是简单的网格布局,使用其可以方便的实现多行多列的布局样式。 static void GridLayoutTest(){ Frame frame = new Frame("Grid"); GridLayout layout = new GridLayout(2, 3, 10, 10); Panel pannel = new Panel(layout); ...https://www.ctyun.cn/zhishi/p-336839
4.java常用的布局管理器有哪些问答Java常用的布局管理器有以下几种: BorderLayout(边界布局管理器):将容器分为东、西、南、北和中间5个区域,组件可以放置在这5个区域中。 FlowLayout(流布局管理器):按照添加的顺序依次排列组件,当一行放不下时会自动换行。 GridLayout(网格布局管理器):将容器分为行和列的网格,组件会按照网格的顺序从左到右、...https://www.yisu.com/ask/59854774.html
5.Bootstrap5布局表格网格极客教程例子2:在这个例子中,我们将使用.row和.col-*类创建不同尺寸的表格网格布局。<!DOCTYPE html> Bootstrap 5 Layout Form grid https://geek-docs.com/bootstrap/bootstrap-5/bootstrap-5-layout-form-grid.html
6.Android布局——线性布局相对布局帧布局表格布局网格布局...简介:Android布局——线性布局、相对布局、帧布局、表格布局、网格布局、约束布局 1.概述 1.1 布局的作用:布局是对界面结构的全面规划和安排,通过api中提供的各种布局能够快速的完成对界面的设计和规划 1.2 布局的种类:线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)、表格布局(TableLayout)、网格...http://www.jaozi.cn/?article/1477149
7.java中Swing五种常见的布局方式java本文通过代码示例给大家详细讲解了java中Swing五种常见的布局方式,以及相关注意知识点,有兴趣的朋友参考学习下。1、 边界布局(BorderLayout) 2、流式布局(FlowLayout) 3、网格布局(GridLayout) 4、盒子布局(BoxLaYout) 5、空布局(null) 还有其他两种布局,分别是GridBagLayout(网格包布局)、CardLayout(卡片布局) 注意...https://www.jb51.net/article/135684.htm
8.JAVA——45.flowlayout和gridlayout布局构造方法:GridLayout(int rows, int cols) :用指定的行数和列数创建网格布局。 package org.zhaiyujia.test1;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class Guitest1 extends JFrame { JButton b1,b2,b3,b4,b5; JPanel p; publi...https://www.tulingxueyuan.cn/tlzx/jsp/2833.html
9.Java一分钟之JavaFX布局管理:GridPane,VBox,HBoxJavaFX是Java的一个强大的图形用户界面(GUI)工具包,提供了多种布局管理器来帮助开发者组织和控制窗口中的控件。在本篇博客中,我们将深入探讨三种常用的布局管理器:GridPane、VBox和HBox,并讨论一些常见问题、易错点及如何避免它们。 1. GridPane GridPane允许你创建一个二维网格来放置控件。每个控件都有固定的行和列位...https://cloud.tencent.com/developer/article/2422499
10.Android15.0UI开发(六)——列表控件RecyclerView的网格布局...1.0 列表控件RecyclerView的网格布局排列实现,关键词GridLayoutManager。 LinearLayoutManager 实现顺序布局 GridLayoutManager 实现网格布局 StaggeredGridLayoutManager 实现瀑布流布局 2.0 新建项目RecyclerviewTest,目录如下: image 3.0 这里需要在app/build.gradle中配置,导入依赖包: ...https://www.jianshu.com/p/3446af05b1e8