java布局_java布局学习 (一)

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 布局管理器都是从左向右排列所有组件的。

样式如下图

3e271ea74ea3f3eb2aab08445c837879.png

常用的构造函数有三种

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,控件之间的垂直间距

1 importjava.awt.FlowLayout;2 importjavax.swing.JFrame;3 importjavax.swing.JButton;4

5

6 public classFlowLayoutDemo7 {8 public static voidmain(String[] args)9 {10 JFrame f=new JFrame("FlowLayout");11 f.setLayout(newFlowLayout());12 for(int i=0;i<7;i++)13 {14 JButton btn=new JButton("Button"+i);15 f.add(btn);16 }17 f.setSize(300,150);18 f.setVisible(true);19 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);20 }21 }

显示效果:

c2b4c01e71d8b075f53f42d817927dc8.png

2)BorderLayout  边框布局

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

9cec148b07220252d7b9d8f8730caf9f.png

这个布局有四点需要注意

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,区域之间的垂直间距。

1 importjava.awt.BorderLayout;2 importjavax.swing.JFrame;3 importjavax.swing.JButton;4

5

6 public classBorderLayoutDemo7 {8 public static voidmain(String[] args)9 {10 JFrame f=new JFrame("BorderLayout");11 JButton btn=new JButton("BorderLayout.NORTH");12 f.add(btn,BorderLayout.NORTH); //NORTH、SOUTH、EAST、WEST、CENTER在BorderLayout中被设置为静态变量了

13 btn=new JButton("BorderLayout.SOUTH");14 f.add(btn,BorderLayout.SOUTH);15 btn=new JButton("BorderLayout.EAST");16 f.add(btn,BorderLayout.EAST);17 btn=new JButton("BorderLayout.West");18 f.add(btn,BorderLayout.WEST);19 btn=new JButton("BorderLayout.CENTER");20 f.add(btn,BorderLayout.CENTER);21 f.pack();22 f.setVisible(true);23 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);24 }25 }

8eca9e997b616bbd152c14981526f38c.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值