java 网格布局管理器,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) :

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

方法摘要

int

getColumns()  :获取此布局中的列数。

int

getHgap():获取组件之间的水平间距。

int

getRows() :获取此布局中的行数。

int

getVgap()  :获取组件之间的垂直间距。

void

setColumns(int cols)  :将此布局中的列数设置为指定值。

void

setHgap(int hgap):将组件之间的水平间距设置为指定值。

void

setRows(int rows):将此布局中的行数设置为指定值。

void

setVgap(int vgap) :将组件之间的垂直间距设置为指定值。

toString():返回此网格布局的值的字符串表示形式。

实例一:

//GridLayoutDemo.java

import javax.swing.*;

import java.awt.*;

public class GridLayoutDemo extends JFrame {

public GridLayoutDemo() {

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

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

getContentPane().add(new JButton("Button 1"));

getContentPane().add(new JButton("Button 2"));

getContentPane().add(new JButton("Button 3"));

getContentPane().add(new JButton("Button 4"));

getContentPane().add(new JButton("Button 5"));

}

public static void main(String args[]) {

GridLayoutDemo f = new GridLayoutDemo();

f.setTitle("GridWindow Application");

f.pack();

f.setVisible(true);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

}

}

程序结果如下图所示:

L3Byb3h5L2h0dHAvbXkuY3Nkbi5uZXQvdXBsb2Fkcy8yMDEyMDcvMjIvMTM0Mjk0MDQ4NV8xMzgzLnBuZw==.jpg

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

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

//GridFrame.Java

import java.awt.*;

import javax.swing.*;

class GridFrame extends JFrame{

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

JPanel p=new JPanel(new GridLayout(4,4,3,3));

JTextArea t=new JTextArea();        //定义文本框

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

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

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

public GridFrame(String s){

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

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

JButton btn[];                             //声明按钮数组

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

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

for(int i=0;i

btn[i]=new JButton(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);               //让窗体居中显示

}

public static void main(String[] args){

GridFrame gl=new GridFrame("网格布局计算机!");

}

}

程序执行结果如下图:

L3Byb3h5L2h0dHAvbXkuY3Nkbi5uZXQvdXBsb2Fkcy8yMDEyMDcvMjIvMTM0Mjk0MDQ5MV80MTg5LnBuZw==.jpg

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

三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)

摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...

三十三、Java图形化界面设计——布局管理器之null布局(空布局)

摘自http://blog.csdn.net/liujun13579/article/details/7774267 三十三.Java图形化界面设计--布局管理器之null布局(空布局) 一般容器都有 ...

三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网 ...

转:二十七、Java图形化界面设计——容器(JFrame)

转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...

二十七、Java图形化界面设计——容器(JFrame)

摘自http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的, ...

Java图形化界面设计——容器(JFrame)

Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...

Java 图形化界面设计(GUI)实战练习(代码)

关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象 ...

01 Java图形化界面设计——容器(JFrame)

程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构,现在就进入java图形化界面编程. 一.Jav ...

02 Java图形化界面设计——中间容器(Jpanel)

上一篇讲解了Jframe顶层容器,例子中生成了一个空的窗体,在实际编程过程中,一般很少将文本框.按钮等组件直接放在顶层容器中进行布局,大多数时候是通过布局管理器结合中间容器对组件进行布局设置. 1.  ...

Java图形化界面设计——中间容器(Jpanel)

1.  将组件添加到JFrame中 方式之一: frame.getContentPane().add(childComponent) 用getContentPane()方法获得JFrame的内容面板, ...

随机推荐

删除win8的网络连接记录

打开注册表,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles,修改各个子项里的P ...

IO流(二)__BufferedReader和BufferedWriter

BufferedReader和BufferedWriter 字符流的缓冲区:缓冲区的而出现提高了对数据的读写效率对应类:BufferedWriter  BufferedReader缓冲区要结合流才可以 ...

[译] libvirt 虚机的生命周期 (Libvirt Virtual Machine Lifecycle)

翻译自:http://wiki.libvirt.org/page/VM_lifecycle   这篇文章描述虚机生命周期的基本概念.其目的在于在一篇文章中提供完整的关于虚机创建.运行.停止.迁移和删除 ...

【转】Sql Server参数化查询之where in和like实现详解

转载至:http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html 文章导读 拼SQL实现where in查询 使用CHARINDE ...

norm函数

如果A为向量 norm(A,p) 返回向量A的p范数. norm(A) 返回向量A的2范数,即等价于norm(A,2).

10款最好用的MySQL数据库客户端图形界面管理工具

MySQL Workbench 该工具由MySQL开发,是一个跨平台的可视化数据库设计工具.它是DBDesigner4项目备受期待的替代者,它是一个本地图形化工具,支持的操作系统包括Windows.L ...

python(19)编码问题

转载链接:http://blog.csdn.net/lxdcyh/article/details/4018054 python的编码问题,一直都让人很头疼,今天就整理下python的编码知识. 首先: ...

elastalert基于微信公众号报警

环境部署 安装其它的必需包 yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel   1,下载. ...

hbase shell 启动报错

启动hbase之后,发现hbase shell启动报错: version 2.0.0-alpha4, r5c4b985f89c99cc8b0f8515a4097c811a0848835, Tue Oc ...

Android动画(Animations)

动画类型Android的animation由四种类型组成 XML中 alpha  : 渐变透明度动画效果 scale  :渐变尺寸伸缩动画效果 translate  : 画面转换位置移动动画效果 ro ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值