Java 程序通过jvm可以很好的移植到其他平台上,但是java 生成的图形界面样式,在不使用布局的情况下,往往需要重新设定大小,才能在新的平台上调整到最佳样式。这是由于组件的最佳大小 往往是与平台相关的。不同平台上,相同的内容大小可能不一样.java专门提供了LayoutManager(布局管理器)来更好的进行布局管理,使组件的大小和位置调整到最佳。(包括控件无遮挡,无冗余空间)。

(一) 再开始讲解布局之前,这里先普及一下关于布局中的一些常用知识。

1、容器 Container 做过图形界面绘制工作的人基本都知道这个容器的概念。如果第一次接触的话,可以简单的直接把他理解为是一块面板,可以在上面画控件的东西。 常用的Container 包括:window panel scrollPane 其中Window 又包括 Frame(窗体) Dialog(对话框)

2、对容器的布局设置 Container.setLayoutManager(new layoutManager());


(二) Java  常用的有 5+1+1种布局。

1)其中5代表 awt布局有5种分别是 FlowLayout 、BorderLayout、GridLayout、GridBagLayout、CardLayout    下边依次来介绍每种布局

(1)FowLayout 流布局 

什么是流布局呢,flow 代表流 水流,FowLayout也就是就是(防盗连接:本文首发自http://www.cnblogs.com/jilodream/ )控件就像流水(队列)一样向某个排列,当遇到边界的时候,就折回从下一行继续排队。就像军训的时候人员一排一排的站好,当一排人数满的时候,就另起一行继续排队。

默认情况下,FowLayout 布局管理器都是从左向右排列所有组件的。

样式如下图

常用的构造函数有三种

FowLayout()

FowLayout(int align)

FowLayout(int align, int hgap, int vgap)

参数解释:

1、其中align 代表的是对齐方式,包括三种,值作为静态常量保存在 FlowLayout中了

FlowLayout.LEFT 从左向右对齐

FlowLayout.RIGHT从右向左对齐

FlowLayout.CENTER从中间向两边对齐

前两种类似于军训的向左看齐、向右看齐,最后一种类似于照相时,以每排中间为基准,两边向中间靠拢。

2、hgap,控件之间的水平间距 ps.注意此处及下文中的间距都是指的任意一个控件与其周边控件控件的水平和垂直的距离

3、vgap,控件之间的垂直间距

 import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JButton; public class FlowLayoutDemo
{
public static void main(String[] args)
{
JFrame f=new JFrame("FlowLayout");
f.setLayout(new FlowLayout());
for(int i=0;i<7;i++)
{
JButton btn=new JButton("Button"+i);
f.add(btn);
}
f.setSize(300,150);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

显示效果:


2)BorderLayout  边框布局

Bordern n.边境;边界;国界 BorderLayout 也就是把容器通过边界划分成几个区域,这几个区域各自始终存在, 并且数量始终为5个:东、西、南、北、中(也就是 EAST/WEST/SOUTH/NORTH/CENTER),区域的相对位置如下图.添加的控件可以被指定放置在区域中的任何一个位置。

这个布局有四点需要注意

1、当布局的大小发生调整时 NORTH/SOUTH/CENTER进行水平调整 EAST/WEST/CENTER进行垂直调整 比如说拉宽窗体,那么只有NORTH/SOUTH/CENTER 这三个区域的宽度会变大,WEST和EAST的宽度不发生改变

2、当向BorderLayout布局的容器中添加控件时,需要指定控(防盗连接:本文首发自http://www.cnblogs.com/jilodream/ )件要被放置在哪个区域中。否则,系统方法会默认将该控件放置在center区域。

3、每个区域只能添加一个控件或者一个容器。如果反复添加,后续添加的控件会覆盖前边添加的控件。

4、Frame、Dialog、ScrollPane默认使用的都是这个布局,所以直接向这几个容器中添加控件,最终只会显示一个控件

常用的构造函数有两种

BorderLayout()

BorderLayout(int hgap, int vgap)

ps. hgap,区域之间的水平间距。vgap,区域之间的垂直间距。

 import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JButton; public class BorderLayoutDemo
{
public static void main(String[] args)
{
JFrame f=new JFrame("BorderLayout");
JButton btn=new JButton("BorderLayout.NORTH");
f.add(btn,BorderLayout.NORTH); //NORTH、SOUTH、EAST、WEST、CENTER在BorderLayout中被设置为静态变量了
btn=new JButton("BorderLayout.SOUTH");
f.add(btn,BorderLayout.SOUTH);
btn=new JButton("BorderLayout.EAST");
f.add(btn,BorderLayout.EAST);
btn=new JButton("BorderLayout.West");
f.add(btn,BorderLayout.WEST);
btn=new JButton("BorderLayout.CENTER");
f.add(btn,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

java布局学习 (一)的更多相关文章

  1. java布局学习(新)

    坚持学习java一段时间,最近自己需要做一个小型的系统,所以需要自己将自己的AWT知识巩固一下. 一.4大布局管理器. 1.边界布局BorderLayout 是JFrame和JDialog的默认布局方 ...

  2. java布局学习 (二)

    前文中介绍了FlowLayout和BorderLayout 本文我们将会继续介绍java中的布局方式 (3)GridLayout 网格布局 这种布局会将整个容器划分成M行*N列的网格. 如下图:    ...

  3. java布局学习 (三)

    前文已经讲了常用的4个布局了,今天再介绍最后的三个布局: 5.CardLayout 6.BoxLayout 7.空白布局null (五)CardLayout   纸牌布局 首先这种布局不是二维布局,而 ...

  4. Android(java)学习笔记207:开源项目使用之gif view

    1. 由于android没有自带的gif动画,我在Android(java)学习笔记198:Android下的帧动画(Drawable Animation) 播客中提到可以使用AnimationVie ...

  5. Android(java)学习笔记179:BroadcastReceiver之 有序广播和无序广播(BroadcastReceiver优先级)

    之前我们在Android(java)学习笔记178中自定义的广播是无序广播,下面我们要了解一下有序广播:   1.   我们首先了解一下有序广播和无序广播区别和联系? (1) 有序广播> 接受者 ...

  6. Android(java)学习笔记205:网易新闻RSS客户端应用编写逻辑过程

    1.我们的项目需求是编写一个新闻RSS浏览器,RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用.RSS目前广泛用于网上新闻频道,bl ...

  7. Android(java)学习笔记204:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)

    1.有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高. ...

  8. Android(java)学习笔记216:多线程断点下载的原理(Android实现)

    之前在Android(java)学习笔记215中,我们从JavaSE的角度去实现了多线程断点下载,下面从Android角度实现这个断点下载: 1.新建一个Android工程: (1)其中我们先实现布局 ...

  9. Android(java)学习笔记233: 远程服务的应用场景(移动支付案例)

    一. 移动支付:       用户需要在移动终端提交账号.密码以及金额等数据 到 远端服务器.然后远端服务器匹配这些信息,进行逻辑判断,进而完成交易,返回交易成功或失败的信息给移动终端.用户提交账号. ...

随机推荐

  1. css记录

    padding padding-top是在绿色边框内,从顶部向下移20像素位置,默认padding-top 为0时,红色边框为20像素高,通过padding-top属性,为顶部增加了20像素,这时顶部 ...

  2. Bigtable 论文 阅读笔记 - 原理部分

    不支持markdown,桑心.更好的阅读体验请看:Github/Bigtable.md Paper: Google Bigtable paper Notes author: Lhfcws Wu Tim ...

  3. Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (dist) on project hadoop-kms: An Ant BuildException has occured

    编译cdh版hadoop2.5.0出现的问题 系统: CentOs66 64位 JDK:1.7 Maven: 3.0.5 Protobuf: libprotoc 2.5.0 编译命令: mvn pac ...

  4. 开发中容易写错的一条SQL语句

    select * from tableName where name = like '%糖糖%' 出错的地方:name后面有=和like 出错的原因:复制过来的,其它地方是=,没有删掉直接加了like ...

  5. xampp 80端口被占用解决办法

    很多朋友安装xampp之后,启用服务器或者数据库失败,发现端口已经被占用.因为每台电脑占用端口的软件不一样,要如何解决这个问题. 第一种解决方法: 检查软件安装路径中是否有中文,如下图: 解决方法: ...

  6. 那些年一起用过的iOS开发利器之CocoaPods

    本系列所有工具的简介见:http://www.cnblogs.com/lloydsheng/p/3637606.html CocoaPods是一个负责管理iOS项目中第三方开源代码的工具.CocoaP ...

  7. yxcms后台验证码不显示?怎么取消yxcms后台验证码

    嗨,大家好,我是YXCMS的小M老湿,(其实还是习惯大家叫我猪猪吧!)今天又要分享一则yxcms的使用技巧,当然也是yxcms用户在使用过程中很容易出现的小白问题,当然还是同样,yxcms的大神级别的 ...

  8. 初识Java泛型以及桥接方法

    泛型的由来 在编写程序时,可能会有这样的需求:容器类,比如java中常见的list等.为了使容器可以保存多种类型的数据,需要编写多种容器类,每一个容器类中规定好了可以操作的数据类型.此时可能会有Int ...

  9. 总结-EL表达式

    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ tagl ...

  10. 初识The Battle of Polytopia

    1.首先了解了一下<文明5-美丽新文明>视频介绍网址:http://list.youku.com/albumlist/show?id=19481409&ascending=1&am ...