zoukankan      html  css  js  c++  java
  • java.awt之布局管理器

    Java的awt包中定义了很多GUI组件,如按钮、标签、文本框等,这些组件一般放在Frame、Panel容器中进行管理。容器中的组件的大小、位置、排列方式等属性统称为容器的布局。在java中提供了布局管理器对容器中的布局进行管理。常用的布局管理器及其显示特性如下表:

    所属类包 布局管理器名称 显示效果
    Java.awt FlowLayout 组件按照加入的先后顺序逐行摆放,行内从左到右,一行排满后换行,可以设定组件的对齐方式、行间距、列间距
    Java.awt BorderLayout 容器被划分为东、西、南、北、中五个区域,每个区域只能放一个组件
    Java.awt GridLayout 容器被划分为M×N的矩形网格区域,组件按照加入的顺序,行内从左到右,行间从上到下的顺序排列,每个区域只能放一个组件
    Java.awt CardLayout 如同一叠卡片,每个卡片对应一个组件,每次只有最上面的一个组件可见,可以人为设定显示那个组件
    Java.awt GridBagLayout GridLayout的的升级版,组件仍按照行、列放置,但每个组件可以占据多个网格

    每个容器都有一个默认的布局管理器,Window、Frame、Dialog的默认布局管理为BorderLayout,Panel、Applet默认为FlowLayout布局,Component、Contain默认没有布局管理器。
    容器的布局管理器必须在添加任何组件之前添加,可以使用容器类的setLayout()方法。在为容器设置好布局管理器之后,向容器添加的所有组件的位置都将由设定的布局管理器进行管理。

    FlowLayout 流布局

    FlowLayout是最简单的布局管理器,容器类可以使Frame框架、或者Panel面板。组件按照添加的顺序,从左到右排列,一行排满以后,重新开始下一行。用户无法手动换行。
    FlowLayout中定义的对齐方式:

    • Flowlayout.LEFT 左对齐
    • Flowlayout.RIGHT 右对齐
    • Flowlayout.CENTER 居中
    • Flowlayout.LEADING 父容器依赖左对齐
    • Flowlayout.TRAILING 父容器依赖右对齐

    组件间的对齐方式默认是居中对齐,也可以在构造方法中设置不同的组件行间距、列间距

    构造方法:

    • FlowLayout()
    • FlowLayout(int align) 对齐方式
    • FlowLayout(int align, int hgap, int vgap) 对齐方式、横向间距、纵向间距

    BorderLayout 分区布局管理器

    分区布局管理器把整个容器划分为东、西、南、北、中五个区域,组件只能添加到指定的区域中。如果不指定区域,默认添加到Center区域。一个区域只能添加一个组件,如果往一个区域中添加多个组件,则先前添加的组件会被遗弃。如果确实想在一个区域添加多个组件,则可以将组件添加到一个容器中,然后把该容器添加到该区域。组件的尺寸被容器强行控制,与其所在的区域的尺寸相同。当容器的尺寸发生变化时,BoradLayout各个区域的尺寸也会变化,原则为:

    • 北、南只能水平方向缩放
    • 东、西只能在垂直方向缩放
    • 中间区域在水平、垂直两个方向都可以缩放

    BorderLayout中区域相关的常量:

    • BorderLayout.NORTH 北
    • BorderLayout.SOUTH 南
    • BorderLayout.EAST 东
    • BorderLayout.WEST 西
    • BorderLayout.Center 中

    GridLayout 网格布局

    网格布局将容器划分为规则的M×N个矩形区域,每个网格大小相等。组件加入到每个矩形的单元格中,按其加入顺序从左到右填满一行后换行。组件的大小被网格布局强行控制,受单元格的大小限制。当容器的尺寸变化时,组件的相对位置保持不变,但大小随容器自动变化。当组件个数超过网格个数时,布局管理器自动增加网格个数,原则是保持行数不变。
    构造方法:

    • GridLayout(int m, int n)网格的行数、列数
    • GridLayout(int m, int n, int hgap, int vgap)网格的行数、列数、横向间距、纵向间距

    CardLayout 卡片布局

    CardLayout将多个组件在同一个容器区域内交替显示,相当于多张卡片叠在一起,只有最上面的组件可见。可以按照名称指定要显示的一个组件,也可以按照先后顺序依次显示,也可以直接定位到第一个或最后一个组件进行显示。
    构造方法:

    • CardLayout()

    常用方法:

    • cardLayout.First() 显示第一个组件
    • cardLayout.Last() 显示最后一个组件
    • cardLayout.next() 显示下一个组件
    • cardLayout.previous() 显示上一个组件
    • cardLayout.show(Container parent,String name) 显示名称为name的组件(可以在添加组件到容器时,向容器注册name)

    GridBagLayout

    暂时略。

  • 相关阅读:
    windows64系统下安装 redis服务 (详细)
    周期信号的傅里叶级数表示
    LeetCode 36——有效的数独
    LeetCode 3——无重复字符的最长子串
    线性时不变系统的卷积
    信号与系统
    C++ 学习笔记之——输入和输出
    LeetCode 74——搜索二维矩阵
    LeetCode 389——找不同
    LeetCode 2——两数相加
  • 原文地址:https://www.cnblogs.com/21summer/p/9334810.html
Copyright © 2011-2022 走看看