Swing-布局管理器之GridLayout(网格布局)-入门
注:本文内容源自于三十一、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个,剩下的组件放在最后一行。
l 若组件数超过网格设定的个数,则布局管理器会自动增加网格个数,原则是保持行数不变。
构造方法摘要
GridLayout(): 创建具有默认值的网格布局,即每个组件占据一行一列。
GridLayout(int rows, int cols) :创建具有指定行数和列数的网格布局。Rows为行数,cols为列数。
GridLayout(int rows, int cols, int hgap, int vgap) :创建具有指定行数、列数以及组件水平、纵向一定间距的网格布局。
方法摘要
getColumns() :获取此布局中的列数。
getHgap():获取组件之间的水平间距。
getRows() :获取此布局中的行数。
getVgap() :获取组件之间的垂直间距。
removeLayoutComponent(Component comp) :从布局移除指定组件。
setColumns(int cols) :将此布局中的列数设置为指定值。
setHgap(int hgap):将组件之间的水平间距设置为指定值。
setRows(int rows):将此布局中的行数设置为指定值。
setVgap(int vgap) :将组件之间的垂直间距设置为指定值。
toString():返回此网格布局的值的字符串表示形式。
demo:GridLayoutDemo.java
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants; /*
* 2015-06-10
*/ public class GridLayoutDemo extends JFrame{ JButton resultButton = new JButton("0");
JPanel panel = new JPanel(); public GridLayoutDemo()
{
//set to BorderLayout
setLayout(new BorderLayout()); add(resultButton, BorderLayout.NORTH);
add(panel, BorderLayout.CENTER); //gridLayout
GridLayout gridLayout = new GridLayout(4,4,3,3);
panel.setLayout(gridLayout); //add buttons
String [] buttonNames = new String []{"7", "8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};
for (String string : buttonNames) {
panel.add(new JButton(string));
}
//config resultButton
resultButton.setSize(200, 50);
resultButton.setHorizontalAlignment(SwingConstants.RIGHT);
resultButton.setEnabled(false); //setSize(250,200);
pack();
setTitle("GridLayoutDemo");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
} public static void main(String[] args) {
// TODO Auto-generated method stub
GridLayoutDemo demo = new GridLayoutDemo();
demo.setVisible(true);
} }
运行界面如图1所示:

图1 运行效果

图 2 缩放效果
可以看到,使用gridLayout后,其中控件的宽高尺寸根据窗体的缩放进行相应的适配。
Swing-布局管理器之GridLayout(网格布局)-入门的更多相关文章
- 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)
摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网 ...
- 布局管理器之CardLayout(卡片布局管理器)
对于选项卡这个概念大家可能不会陌生,就是在一个窗口中可以切换显示多页不同的内容,但同一时间只能是其中的某一页可见的,这样的一个个的页面就是选项卡. CardLayout就是类似的这样一个布局管理器,它 ...
- Java图形化界面设计——布局管理器之GridLayout(网格布局)
网格布局特点: l 使容器中的各组件呈M行×N列的网格状分布. l 网格每列宽度相同,等于容器的宽度除以网格的列数. l 网格每行高度相同,等于容器的高度除以网格的行数. l 各组件的排列方式 ...
- 05 Java图形化界面设计——布局管理器之GridLayout(网格布局)
网格布局特点: l 使容器中的各组件呈M行×N列的网格状分布. l 网格每列宽度相同,等于容器的宽度除以网格的列数. l 网格每行高度相同,等于容器的高度除以网格的行数. l 各组件的排列方式 ...
- 转:三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)
http://blog.csdn.net/liujun13579/article/details/7772491 网格布局特点: l 使容器中的各组件呈M行×N列的网格状分布. l 网格每列宽度相 ...
- java 图形化小工具Abstract Window Toolit ;布局管理器FlowLayout流式布局;BorderLayout边界布局;GridLayout网格布局;CardLayou重叠卡片布局;BoxLayout方框布局;绝对定位
1.FlowLayout流式布局管理器: FlowLayout布局管理器中,组件像水流一样向某方向流动(排列),遇到障碍(边界)就折回,重头开始排列 .在默认情况下,FlowLayout局管理器从左向 ...
- 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)
摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...
- 三十三、Java图形化界面设计——布局管理器之null布局(空布局)
摘自http://blog.csdn.net/liujun13579/article/details/7774267 三十三.Java图形化界面设计--布局管理器之null布局(空布局) 一般容器都有 ...
- Android零基础入门第32节:新推出的GridLayout网格布局
原文:Android零基础入门第32节:新推出的GridLayout网格布局 本期主要学习的是网格布局是Android 4.0新增的布局,和前面所学的TableLayout表格布局 有点类似,不过他有 ...
随机推荐
- Spring中各jar包的作用
Spring AOP:Spring的面向切面编程,提供AOP(面向切面编程)的实现 Spring Aspects:Spring提供的对AspectJ框架的整合 Spring Beans:Spring ...
- macOS Sierra Version 10.12.6 环境下Tomcat的下载与安装以及InterlliJ IDEA 2017.2 环境下配置Tomcat 与创建Web项目
一.Tomcat的下载与安装 1.官网(http://tomcat.apache.org/)下载Tomcat 9.0 Core:zip包: 2.解压到指定的文件夹即可安装完成: 3.测试是否安装成功 ...
- Elastic Stack
Elastic Stack 开发人员不能登陆线上服务器查看详细日志 各个系统都有日志,日志数据分散难以查找 日志数据量大,查询速度慢,或者数据不够实时 官网地址:https://www.elastic ...
- Fiddler获取https会话
默认下,Fiddler不会捕获HTTPS会话,需要你设置下, 打开Fiddler Tools--->Fiddler Options--->HTTPS 选项 选中checkbox,如上图 ...
- 利用Python实现kNN算法
邻近算法(k-NearestNeighbor) 是机器学习中的一种分类(classification)算法,也是机器学习中最简单的算法之一了.虽然很简单,但在解决特定问题时却能发挥很好的效果.因此,学 ...
- JQuery对联广告
html--------------------------------------------------------------------------------------<!DOCTY ...
- SSH框架通过JFreeChart实现柱状图和获取项目路径
获取项目路径:String url= ServletActionContext.getRequest().getRealPath("/upload"); 一.直接生成的图片输出到j ...
- 记一次VS Code崩溃的解决(Win10扫描自动回复系统文件)
早上修改Vue.js框架搭建的项目,正高兴着,突然电脑崩溃,重启后VS code打不开,报错如下: DWrite.dll丢失 然后查看了一下 C:\windows\system32\下 DWrite ...
- 斜率DP hdu 3507
Problem Description Zero has an old printer that doesn't work well sometimes. As it is antique, he s ...
- 入侵拿下DVBBS php官网详细过程(图)
几 个月前,DVBBS php2.0暴了一个可以直接读出管理员密码的sql注入漏洞,当时这个漏洞出来的时候,我看的心痒,怎么还会有这么弱智的漏洞,DVBBS php2.0这套代码我还没仔细看过,于是5 ...