布局是指容器中组件的排列方式

常用的布局管理器

布局管理器名称 所属类包 说明
FlowLayout(流式布局) java.awt 组件按照加入的先后顺序、按照设置的对齐方式从左向右排列,一行排满后到下一行开始继续排列
BorderLayout(边框布局) 容器划分为东、西、南、北、中五个区域,每个区域只能放一个组件
CardLayout(卡片布局) 能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组件叠在一起,初始时显示该空间中第一个添加的组件,通过CardLayout类提供的方法可以切换该空间中显示的组件。
GridLayout(网格布局) 容器的空间被划分为 M×N 个网格区域,每个区域只能放置一个组件
GridBagLayout(网格包布局) GridLayout的升级版,组件仍然是按照行、列放置,但是每个组件可以占据多个网格。
BoxLayout(箱式布局) java.swing 允许在容器中纵向或者横向放置多个组件
SprigLayout(弹簧布局) 根据一组约束条件放置组件
空布局 不适用布局管理器,按照组件自身提供的大小、位置信息放置组件。

容器的默认布局管理器

  容器 默认的布局管理器
顶层容器      JFrame       BorderLayout(边框布局) 
JDialog BorderLayout(边框布局)
JApplet FlowLayout(流式布局)
中间容器 JPanel FlowLayout(流式布局)

FlowLayout(流式布局)

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

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

-- 无论对齐方式如何,组件均按照从左向右的方式进行排列,一行排满,转到下一行。比如按照右对齐排列,第一个组件放置在第一行的最右边,添加第二个组件时,第一个组件向左平移,第二个组件变成该行最右边的组件,最终,组件还是按照先后顺序从左向右排列,只不过靠在容器的右侧。

java.awt.FlowLayout
public class FlowLayout extends Object implements LayoutManager, Serializable
// 构造器
public FlowLayout() // 创建一个流式布局,默认是居中对齐,水平和垂直间隙是 5 个像素
public FlowLayout(int align) // 创建一个流式布局,指定对齐方式,默认水平和垂直间隙是 5 个像素 对齐方式使用FlowLayout的属性指定
public FlowLayout(int align, int hgap, int vgap) // 创建一个流式布局,指定对齐方式,指定水平和垂直间隙
// 常用方法
public void Void setAlignment(int align) // 设置比布局的对齐方式
public void setHgap(int hgap) // 设置组件之间及组件和容器之间的水平间隙
public void setVgap(int vgap) // 设置组件之间及组件和容器之间的垂直间隙

BorderLayout(边框布局)

-- 如果没有指定组件的方位,默认添加到中间的位置上。

-- 总是满屏占满容器,如果东、西、南、北中某个方位没有对应的组件,中间位置的组件就会占据器空缺的位置。

CardLayout(卡片布局)

java.awt.CardLayout
public class CardLayout extends Object implements LayoutManager2, Serializable
// 构造器
public CardLayout() // 组件距容器左右边界和上下边界距离为缺省值0个像素
public CardLayout(int hgap, int vgap) // 组件距容器左右边界和上下边界的距离为指定值
// 常用方法
public void show(Container parent, String name) // 显示指定卡片
public void first(Container parent) // 翻转到容器的第一张卡片
public void last(Container parent) // 翻转到容器的最后一张卡片
public void previous(Container parent) // 翻转到指定容器的前一张卡片
public void next(Container parent) // 翻转到指定容器的后一张卡片

GridLayout(网格布局)

-- 如果网格数量不够使用时,默认会多加一列

GridBagLayout(网格包布局)

BoxLayout(箱式布局)

SprigLayout(弹簧布局)

Java界面编程—布局管理的更多相关文章

  1. 转:Java图形化界面设计——布局管理器之FlowLayout(流式布局)其他请参考转载出处网址

    http://blog.csdn.net/liujun13579/article/details/7771191 前文讲解了JFrame.JPanel,其中已经涉及到了空布局的使用.Java虽然可以以 ...

  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. 03 Java图形化界面设计——布局管理器之FlowLayout(流式布局)

    前文讲解了JFrame.JPanel,其中已经涉及到了空布局的使用.Java 虽然可以以像素为单位对组件进行精确的定位,但是其在不同的系统中将会有一定的显示差异,使得显示效果不尽相同,为此java提供 ...

  6. JAVA中GridBagLayout布局管理器应用详解

    很多情况下,我们已经不需要通过编写代码来实现一个应用程序的图形界面,而是通过强大的IDE工具通过拖拽辅以简单的事件处理代码即可很轻松的完成.但是我们不得不面对这样操作存在的一些问题,有时候我们希望能够 ...

  7. JAVA流式布局管理器--JAVA基础

    JAVA流式布局管理器的使用: FlowLayoutDeme.java: import java.awt.*;import javax.swing.*;public class FlowLayoutD ...

  8. Java图形化界面设计——布局管理器之FlowLayout(流式布局)

    一.布局管理器所属类包 所属类包 布局管理器名称 说明 Java.awt FlowLayout(流式布局) 组件按照加入的先后顺序按照设置的对齐方式从左向右排列,一行排满到下一行开始继续排列 Bord ...

  9. java界面编程(3) ------ 控制布局

    本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 在java 中,组件放置在窗口上的方式可能与其它的GUI系统都不同样.首先,它全 ...

随机推荐

  1. day17 正则表达式 re模块和hashlib模块

    今日内容 1. re&正则表达式(*****) 注:不要将自定义文件命名为re import re re.findall(正则表达式,被匹配的字符串) 拿着正则表达式去字符串中找,返回一个列表 ...

  2. macOS 为 Markdown 文件开启全文检索方法

    曾经的我一向使用 Evernote + 马克飞象来记载笔记和文档.不过感觉这两个东西越来越不思进取,几年都没什么变化.所以,一年多曾经,我就把一切笔记迁移成本地 Markdown 文件,合作 Drop ...

  3. HDU5532 Almost Sorted Array(最长上升子序列 or 瞎搞个做差的数组)

    题目链接:点我 题意:给定一个序列,询问是否能删除一个数让它成为非递减或者非递增的序列. 比如说 删除后的序列是1 3 3 5 或者5 3 3 1 或者1 3 5 或者5 3 1 都可以.只要满足删掉 ...

  4. 对话框 AlterDialog

    AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("尊敬的用户"); bu ...

  5. JavaScript各种继承方式(五):寄生式继承(parasitic)

    一 原理 与原型式继承完全相同,只是对父类的实例(也当作子类的实例使用)进行了增强. function create(obj){ let mango = Object.create(obj); man ...

  6. leetcode 443. String Compression

    下面反向遍历,还是正向好. void left(vector<char>& v, bool p(int)) { ; ; ; while (del < max_index) { ...

  7. iOS开发时使用的bundle路径

    bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in). 对应bundle,cocoa提供了类NSBu ...

  8. Hive和并行数据仓库的比较

    最近分析和比较了Hive和并行数据仓库的架构,本文记下一些体会. Hive是架构在Hadoop MapReduce Framework之上的开源数据分析系统. Hive具有如下特点: 1. 数据以HD ...

  9. iPhone X系列 的获取 - 安全区顶部和底部高度

    ///1. 获得当前窗口 var JY_WINDOW: UIWindow? { get{ if let app = UIApplication.shared.delegate as? AppDeleg ...

  10. android的四种线程池

    使用线程池的好处: 首先通过线程池中线程的重用,减少创建和销毁线程的性能开销.其次,能控制线程池中的并发数,否则会因为大量的线程争夺CPU资源造成阻塞.最后,线程池能够对线程进行管理,比如使用Sche ...