http://blog.csdn.net/liujun13579/article/details/7771191

前文讲解了JFrame、JPanel,其中已经涉及到了空布局的使用。Java虽然可以以像素为单位对组件进行精确的定位,但是其在不同的系统中将会有一定的显示差异,使得显示效果不尽相同,为此java提供了布局管理器,以使编写的图形界面具有良好的平台无关性。

注意:所有的布局管理器均是针对容器来使用的,包括顶层容器和中间容器。

一、布局管理器所属类包

所属类包

布局管理器名称

说明

Java.awt

FlowLayout(流式布局)

组件按照加入的先后顺序按照设置的对齐方式从左向右排列,一行排满到下一行开始继续排列

BorderLayout(边界布局)

容器划分为东、西、南、北、中五个区域,每个区域只能放置一个组件。

GridLayout(网格布局)

容器的空间划分成M×N列的网格区域, 每个区域只能放置一个组件。

CardLayout(卡片布局)

如同一叠牌,每个牌对应一个组件,但每次只能显示其中的一张牌。适用于在一个空间中防止多个组件的情况

GridBagLayout(网格包布局)

GridLayout的升级版,组件仍然是按照行、列放置,但是每个组件可以占据多个网格

Java.swing

BoxLayout(箱式布局)

允许在容器中纵向或者横向防止多个控件

SprigLayout(弹簧布局)

根据一组约束条件放置控件

空布局

不使用布局管理器,按照控件自身提供的大小、位置信息放置控件

二、容器的默认布局管理器

各容器都有默认的布局管理,见下表:

容器

默认布局方式

顶层容器

JFrame

BorderLayout(边界布局)

JDialog

BorderLayout(边界布局)

JApplet

FlowLayout(流式布局)

中间容器

JPanel

FlowLayout(流式布局)

三、FlowLayout(流式布局)

使用FlowLayout布局方式的容器中组件按照加入的先后顺序按照设置的对齐方式(居中、左对齐、右对齐)从左向右排列,一行排满(即组件超过容器宽度后)到下一行开始继续排列。

1、流式布局特征如下:

l  组件按照设置的对齐方式进行排列

l  不管对齐方式如何,组件均按照从左到右的方式进行排列,一行排满,转到下一行。(比如按照右对齐排列,第一个组件在第一行最右边,添加第二个组件时,第一个组件向左平移,第二个组件变成该行最右边的组件,这就是从左向右方式进行排列)

2、流式布局FlowLayout类的常用构造函数和方法

构造函数

名称

用途

FlowLayout()

构造一个新的 FlowLayout,它是默认居中对齐的,默认的水平和垂直间隙是5个像素

FlowLayout(int align)

构造一个新的 FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个像素

五个参数值及含义如下:

0或FlowLayout.lEFT ,控件左对齐

1或FlowLayout.CENTER ,居中对齐

2或FlowLayout.RIGHT ,右对齐

3或FlowLayout.LEADING,控件与容器方向开始边对应

4或FlowLayout.TRAILING,控件与容器方向结束边对应

如果是0、1、2、3、4之外的整数,则为左对齐

FlowLayout(int align, int hgap, int vgap)

创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙。

方法

名称

用途

Void setAlignment(int align)

设置此布局的对齐方式。

void setHgap(int hgap)

设置组件之间以及组件与 Container 的边之间的水平间隙。

void setVgap(int vgap)

设置组件之间以及组件与 Container 的边之间的垂直间隙。

3、FlowLayout 布局应用代码段举例

1)        设置FlowLayout 布局

JFrame  fr=new JFrame( );

FlowLayout  flow=new FlowLayout( );

fr.setLayout(flow);

上面的语句可以简化成:
fr.setLayout(new FlowLayout());

2)        设置框架fr为组件左对齐的FlowLayout布局

fr.setLayout(newFlowLayout(FlowLayout.LEFT));

3)        设置框架fr为组件左对齐的FlowLayout布局,并且组件的水平间距为20像素,垂直间距为40像素。

fr.setLayout(new  FlowLayout(FlowLayout.LEFT,20,40));

实例:对齐方式

// FlowLayoutDemo.java

importjavax.swing.*;

importjava.awt.*;

public classFlowLayoutDemo extends JFrame {

public FlowLayoutDemo() {

//设置窗体为流式布局,无参数默认为居中对齐

setLayout(new FlowLayout());

//设置窗体中显示的字体样式

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

//将按钮添加到窗体中

getContentPane().add(newJButton("Button 1"));

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

getContentPane().add(new JButton("Button3"));

getContentPane().add(newJButton("Button 4"));

}

public static void main(String args[]) {

FlowLayoutDemo window = newFlowLayoutDemo();

window.setTitle("流式布局");

//该代码依据放置的组件设定窗口的大小使之正好能容纳你放置的所有组件

window.pack();

window.setVisible(true);

window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

}

}

程序执行结果如下图所示,生成了一个居中显示的窗体,上面有四个按钮,留意按钮之间,按钮与窗体的上下左右边缘都是默认5个像素的间距。改变窗体大小,如下图所示,分别是原始界面、拉宽原始界面、拉窄原始界面,组件和界面的间距。

修改程序代码体会界面布局效果:

setLayout(newFlowLayout());

将上面源程序中的代码更改如下,然后做出如下更改:

setLayout(newFlowLayout(0));  //组件左对齐

setLayout(newFlowLayout(FlowLayout.RIGHT,10,15));  //组件右对齐,组件间水平间距为10像素,垂直间距为15像素

转:Java图形化界面设计——布局管理器之FlowLayout(流式布局)其他请参考转载出处网址的更多相关文章

  1. java 图形化小工具Abstract Window Toolit ;布局管理器FlowLayout流式布局;BorderLayout边界布局;GridLayout网格布局;CardLayou重叠卡片布局;BoxLayout方框布局;绝对定位

    1.FlowLayout流式布局管理器: FlowLayout布局管理器中,组件像水流一样向某方向流动(排列),遇到障碍(边界)就折回,重头开始排列 .在默认情况下,FlowLayout局管理器从左向 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. sqlserver临时表排序问题

    在2005和2008中,如果将有序的记录插入临时表,则从临时表查看出来的记录是有序的(不使用Order by也是有序状态) 但从2012开始,即使插入的记录集是有序的,查看出来的结果变得无序了,需要依 ...

  2. 彻底理解PHP的SESSION机制

    http://www.cnblogs.com/acpp/archive/2011/06/10/2077592.html 一.默认机制,用磁盘文件来实现PHP会话.php.ini配置:session.s ...

  3. oracle从各个表取得数据保存到另一个表

    从各个表中取得数据保存另一个表中: CREATE VIEW PARAMETER_view ASWITH tall AS ( SELECT p.PI_NO,--产品序列号 p.SERIALNO,--产品 ...

  4. Javascript三元条件运算符

    今天谈一个小知识点,三元运算符.三元运算,顾名思义会有三个要素,表达式的大致组成为condition ? expr1 : expr2:一个语句加两个表达式.问号之前为判断语句.如果为真,则执行第一个表 ...

  5. Oracle 10g创建表空间的完整步骤详解

    本文我们主要介绍了Oracle 10g创建表空间的完整步骤,包括表空间的创建与删除.为应用创建用户以及权限的授予等操作,希望能够对您有所帮助. AD:WOT2014:用户标签系统与用户数据化运营培训专 ...

  6. C语言链表全操作(增,删,改,查,逆序,递增排序,递减排序,链式队列,链式栈)

    一,数据结构——链表全操作: 链表形式: 其中,每个节点(Node)是一个结构体,这个结构体包含数据域,指针域,数据域用来存放数据,指针域则用来指向下一个节点: 特别说明:对于单链表,每个节点(Nod ...

  7. 10.08_逛逛OSC

    (1)每天逛逛OSC是我的习惯了. JNative.JACOB.Shrinkwrap  API? .Lua.WSO2 Identity Server .JBoss Forge.Bugzilla.Cou ...

  8. Q105971:Converting a Regular GUID to a Compressed GUID

    Quote from:  http://flexerasoftware.force.com/articles/en_US/INFO/Q105971 Synopsis   The Windows Ins ...

  9. php文件锁解决少量并发问题

    阻塞(等待)模式: <?php $fp = fopen("lock.txt", "r"); if(flock($fp,LOCK_EX)) { //..处理 ...

  10. Linux下find指令

    Linux是一个“一切皆文件”的操作系统,find(查找文件)指令就尤为重要了.find命令在目录结构中搜索文件,并执行指定的操作. 1.命令格式: find pathname -options [- ...