容器可设置布局管理器,管理容器中组件的布局:

container.setLayout(new XxxLayout());

Java有6种布局管理器,AWT提供了5种:

  • FlowLayout
  • BorderLayout
  • GridLayout
  • GridBagLayout
  • CradLayout

Swing还提供了一种:

  • BoxLayout

1、FlowLayout     流式布局

顾名思义,组件像水流一样,从第一行开始,从左向右依次排列,碰到边界时转到下一行继续。

三个构造函数:

  • FlowLayout()     //使用默认参数
  • FlowLayout(int align)   //设置对齐方式
  • FlowLayout(int align,int hgap,int vgap)   //设置对齐方式、水平间距、垂直间距

align是FlowLayout类的常量,比如:FlowLayout.LEFT,FlowLayout.CENTER

2、BorderLayout   边界布局

将容器划分为EAST、WEST、SOUTH、NORTH、CENTER五个部分,每个部分可放置一个组件。

2个构造函数:

  • BorderLayout()  //使用默认参数
  • BorderLayout(int hgap,int vgap)   //设置水平间距、垂直间距

放置组件时需指定位置:

  • container.add(Component  comp, Borderlayout.SOUTH);    //第二个参数是BorderLayout类的常量,指定组件位置
  • container.add(Component comp);   //缺省位置时,默认为BorderLayout.CENTER,放在中间

一共5个位置,一个位置最多放1个组件。

当然,可以在一个位置放置多个组件,只是后放置的组件会覆盖之前放置的组件。也可以一个都不放。

3、GridLayout   网格布局

将容器划分为指定行数、列数的网格,每个格子的尺寸都相同,一个格子中放置一个组件,适合组件大小差不多的,比如放置计算器的按钮。

从左往右、从上往下依次放置。

注意,网格线实际是不显示的。

2个构造函数:

  • BorderLayout(int rows,int cols)   //设置行数、列数
  • BorderLayout(int rows,int cols,int  hgap,int vgap)    //设置行数、列数、水平间距、垂直间距

4、GridBagLayout   网格包布局

在GridLayout基础上发展而来,比GridLayout更加灵活。功能最强大,但也是最复杂的。

使用步骤:

(1)创建并指定布局管理器

  GridLayout  layout=new GridLayout();

  container.setLayout(layout);

(2)创建GridBagConstraints对象并设置属性

  GridBagConstraints  constraints=new GridBagConstraints();

  constraints.gridx=2;   //设置该组件的起始位置的x坐标

  constraints.gridy=1;  //设置该组件的起始位置的y坐标

  constraints.gridwidth=2;  //设置该组件水平占据几个网格

  constraints.gridheight=1;   //设置改组件竖直方向占据几个网格

(3)建立布局管理器、组件、GridBagConstraints对象中间的关联

  layout.setConstraints(component, constraints);     //第一个参数是组件,第二个是GridBagConstraints对象

  GridBagLayout用一个GridBagConstraints对象设置一个组件的位置

(4)向容器中添加组件

  container.add(component);

添加组件时,重复(2)、(3)、(4)步。

GridBagConstraints有很多属性,比如fill——如何填充网格,此处不再一一列举。

5、CardLayout   卡片布局

将容器中的所有组件(通常是容器)当做一叠卡片,只显示一张卡片(一个组件)。

2个构造函数:

  • CradLayout()
  • CardLayout(int hgap,int vgap)   //设置卡片与容器(左右、上下)边界的的距离

使用步骤:

(1)创建并指定布局管理器

  CardLayout  layout=new CardLayout(10,10);

  container.setLayout(layout);

(2)往容器中添加卡片

  container.add("第一张",component1);   //第一个参数是卡片名,String类型,唯一标识此张卡片,第二个参数是要添加的组件(卡片)

  container.add("第二张",component2);

  .......

默认显示第一张卡片(最先添加的那张)。

一般是配合事件监听使用,发生xx事件时显示指定的卡片。

CardLayout对象可指定要显示的卡片:

  • first(container)   //显示第一张卡片(最先放入的那张)。参数container是卡片所在的容器
  • last(container)    //最后一张
  • previous(container)    //前一张
  • next(container)   //下一张
  • show(container,"卡片名")   //特定的那张。第二个参数是添加卡片时指定的卡片名,唯一标识一张卡片

卡片是有顺序的,按照添加的顺序排列,最先添加的是第一张卡片。

以上几个方法是CardLayout对象具有的,使用示例:

CardLayout  layout=new CardLayout();

container.setLayout(layout);

.......

layout.show(container,"第二张");   //是通过布局管理器调用

6、BoxLayout

BoxLayout是在一个方向上排列组件,从左往右水平排列,或者从上往下竖直排列。

构造函数:

  • BoxLayout(container, axis);   //第一个参数指定容器,第二个参数指定排列方向,

第二个参数可选的值是BoxLayout类的2个常量:BoxLayout.X_AXIS   水平排列,BoxLayout.Y_AXIS  竖直排列

BoxLayout的另一种使用方式:

Box  box=Box.createHorizontalBox();     //Box是一个容器,可使用静态方法创建Box对象,自带BoxLayout布局管理器。

  //createHorizontalBox()创建的Box对象默认使用水平的BoxLayout布局,createVerticalBox()默认使用竖直的BoxLayout布局。不必再指定布局管理器。

box.add(component);

如果不设置布局管理器:

  • JFrame、JDialog、JScrollPane默认使用BorderLayout
  • JPanel(包括Applet)默认使用FlowLayout

Java有2种方式管理布局:

  • 使用布局管理器
  • 绝对定位

绝对定位的使用示例:

container.setLayout(null);    //不适用布局管理器,清除默认的布局管理器

component1.setBounds(......);     //手动为每个组件设置位置、尺寸

component2.setBounds(.....);

container.add(component1);

container.add(component2);

绝对定位很灵活、很简捷,可自由放置组件,但不跨平台。一般还是建议使用布局管理器。

Java GUI 布局管理器的更多相关文章

  1. JAVA GUI布局管理器

    边界布局管理器: a.布局方式:是把整个容器划分为五个部分.东西南北中,南北要贯通,中间最大 (不仅是中间的范围最大,权利也最大)当周边不存在的时候中间会占领周边,当中间不存在的时候周边不能占据中间 ...

  2. java基础 布局管理器

    概念: 组建在容器(比如JFrame)中的位置和 大小 是由布局管理器来决定的.所有的容器都会使用一个布局管理器,通过它来自动进行组建的布局管理. 种类: java共提供了物种布局管理器:流式布局管理 ...

  3. JAVA 网格布局管理器

    //网格布局管理器 import java.awt.*; import javax.swing.*; public class Jiemian3 extends JFrame{ //定义组件 JBut ...

  4. JAVA 边界布局管理器

    //边界布局管理器 import java.awt.*; import javax.swing.*; public class Jiemian1 extends JFrame{ //定义组件 JBut ...

  5. Java 的布局管理器GridBagLayout的使用方法(转)

    GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求 ...

  6. 5、Java Swing布局管理器(FlowLayout、BorderLayout、CardLayout、BoxLayout、GirdBagLayout 和 GirdLayout)

    5.Java-Swing常用布局管理器       应用布局管理器都属于相对布局,各组件位置可随界面大小而相应改变,不变的只是其相对位置,布局管理器比较难以控制,一般只在界面大小需要改是才用,但即使这 ...

  7. Java 的布局管理器GridBagLayout的使用方法【图文说明】

    https://www.cnblogs.com/taoweiji/archive/2012/12/14/2818787.html GridBagLayout是java里面最重要的布局管理器之一,可以做 ...

  8. learning java AWT 布局管理器 GridBagLayout

    在GridBagLayout布局管理器中,一个组件可以跨越一个或多个网格,并可以设置各网格的大小互不相关. import java.awt.*; public class GridBagTest { ...

  9. learning java AWT 布局管理器 GridLayout

    GridLayout布局管理器将容器分割成纵横线分格的网格,每个网格所占的区域大小相同. import java.awt.*; public class GridLayoutTest { public ...

随机推荐

  1. Unity3D集成腾讯语音GVoice SDK

    友情提示:最近发现腾讯GVoice有另一个官网,叫做腾讯游戏服务,经过对比发现这个网站才是最新的,下面我介绍的那个估计是已经废弃的,但不知道为啥老的网站没有直接链接到新网址而是仍然保留了.不过新官网的 ...

  2. mysql 中varchar(50)最多能存多少个汉字

    首先要确定mysql版本4.0版本以下,varchar(50),指的是50字节,如果存放UTF8汉字时,只能存16个(每个汉字3字节) 5.0版本以上,varchar(50),指的是50字符,无论存放 ...

  3. 编译android内核和文件系统,已经安装jdk,提示build/core/config.mk:268: *** Error: could not find jdk tools.jar

    1:确保安装jdk,如果没有安装请移布:http://www.cnblogs.com/jiuyueguang/p/3156621.html 2:如果已经安装了jdk,还是提示此错误, 解决方法 请确保 ...

  4. linux初级学习笔记六:linux用户及权限详解!(视频序号:03_4)

    本节学习的命令:/etc/passwd,/etc/shadow,/etc/group文件详解 本节学习的技能: 安全上下文 文件与目录的权限管理 影子命令 用户,用户组类别详解 /etc/passwd ...

  5. codeforces 437A. The Child and Homework 解题报告

    题目链接:http://codeforces.com/problemset/problem/437/A 题目意思:给出四个选项A.B.C.D选项的内容描述,要求选出符合以下条件的一项. (1)如果某个 ...

  6. html5--6-6 CSS选择器3

    html5--6-6 CSS选择器3 实例 学习要点 掌握常用的CSS选择器 了解不太常用的CSS选择器 什么是选择器 当我们定义一条样式时候,这条样式会作用于网页当中的某些元素,所谓选择器就是样式作 ...

  7. Lucene 的四大索引查询 ——bool 域搜索 通配符 范围搜索

    Lucene 的四大索引查询  清单1:使用布尔操作符 Java代码      //Test boolean operator blic void testOperator(String indexD ...

  8. hadoop源码剖析--$HADOOP_HOME/bin/hadoop脚本文件分析

    1. $HADOOP_HOME/bin/ hadoop #!/usr/bin/env bash# Licensed to the Apache Software Foundation (ASF) un ...

  9. 使用 Word 2013 维护博客

    博客的发布.修改是一件非常耗时.耗精力的事情.借助 Word 2013,维护博客将变得非常简单. 1 新建博客文章 运行 Word 2013,新建文档.如下图所示: 图1 鼠标左键单击上图的" ...

  10. holiday题解

    题目描述如下: 经过几个月辛勤的工作,FJ 决定让奶牛放假.假期可以在 1…N 天内任意选择一段(需要连续),每一天都有一个享受指数 W.但是奶牛的要求非常苛刻,假期不能短于 P 天,否则奶牛不能得到 ...