java-Layout(布局管理器)

Layout(布局管理器)

布局管理器:布局管理就是用于指定组件的 摆放位置的。每种布局管理器都有自己的摆放风格

注意:所有的布局管理器均是针对容器来使用的,包括顶层容器和中间容器。

一、布局管理器所属类包

所属类包布局管理器名称说明
Java.awtFlowLayout(流式布局)组件按照加入的先后顺序按照设置的对齐方式从左向右排列,一行排满到下一行开始继续排列
Java.awtBorderLayout(边界布局)容器划分为东、西、南、北、中五个区域,每个区域只能放置一个组件。
Java.awtGridLayout(网格布局容器的空间划分成M×N列的网格区域, 每个区域只能放置一个组件。
Java.awtCardLayout(卡片布局)如同一叠牌,每个牌对应一个组件,但每次只能显示其中的一张牌。适用于在一个空间中防止多个组件的情况
Java.awtGridBagLayout(网格包布局)GridLayout的升级版,组件仍然是按照行、列放置,但是每个组件可以占据多个网格
Java.swingBoxLayout(箱式布局)允许在容器中纵向或者横向防止多个控件
Java.swingSprigLayout(弹簧布局)根据一组约束条件放置控件
空布局不使用布局管理器,按照控件自身提供的大小、位置信息放置控件

二、容器的默认布局管理器

各容器都有默认的布局管理,见下表:

容器默认布局方式
顶层容器JFrameBorderLayout(边界布局)
顶层容器JDialogBorderLayout(边界布局)
顶层容器JAppletJApplet
中间容器JPanelFlowLayout(流式布局)

实例1:BorderLayout(边框布局管理器)

package test;

import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

/*
布局管理器:布局管理就是用于指定组件的 摆放位置的。

每种布局管理器都有自己的摆放风格 

BorderLayout(边框布局管理器)

    摆放的风格: 上北  、 下南 、 左西、 右东 , 中 

BorderLayout 要注意的事项:
    1. 使用Borderlayout添加组件的时候,如果没有指定组件的方位,那么默认添加到中间的位置上。
    2. 使用BorderLayout的时候,如果东南西北那个方向没有对应 的组件,那么中间位置的组件就会占据其空缺的位置。
    3. 窗体默认的布局管理器就是Borderlayout.

*/

package Demo;

import java.awt.BorderLayout;

/*
绝对布局:
Container.setLayout(null)   取消布局管理器
component.setBounds()   设置每个组件的位置和大小
*/

import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;

@SuppressWarnings("serial")
public class demo7 extends JFrame{

    String[] border = {
            BorderLayout.CENTER,BorderLayout.NORTH,BorderLayout.EAST,BorderLayout.SOUTH,BorderLayout.WEST
            };

    String[] buttonName = {
            "CENTER","NORTH","EAST","SOUTH","WEST"
    };

    public demo7(String title){

        Container container = getContentPane();
        setLayout(new BorderLayout());
        for(int i=0;i<border.length;i++){
            container.add(border[i],new JButton(buttonName[i]));
        }

        setTitle(title);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        pack();

    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new demo7("我的JFrame");

    }

}

实例2:FlowLayout 流式布局管理器

package test;

import java.awt.FlowLayout;
import java.awt.Panel;

import javax.swing.JButton;
import javax.swing.JFrame;

/*
设置布局:
panel.setLayout(args);
args:
    FlowLayout  流式布局管理器
    BorderLayout    边框布局管理器

流式布局管理器(FlowLayout)

流式布局管理器要注意的事项:
    1. 流式布局管理器默认情况是居中对齐的。
        FlowLayout(FlowLayout.LEFT,int x, int y);
        FlowLayout.LEFT 指定对齐的方式。
            x:水平间距
            y:垂直间距

        LEFT   每一行组件都应该是左对齐的,或者0
        RIGHT  每一行组件都应该是右对齐的,或者2
        CENTER  每一行组件都应该是居中的,或者1


    2. panel默认的局部管理器就是FlowLayout.

方法:
int getRows() 
          获取此布局中的行数。 默认值是1
int getColumns() 
          获取此布局中的列数。 默认值是1
 int getHgap() 
          获取组件之间的水平间距。 默认值是0
int getVgap() 
          获取组件之间的垂直间距。默认值是0

设置
void setRows(int rows) 
          将此布局中的行数设置为指定值。默认值是1
void setColumns(int cols) 
          将此布局中的列数设置为指定值。  默认值是1
void setHgap(int hgap) 
          将组件之间的水平间距设置为指定值。  默认值是0
 */

public class demo2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        JFrame jFrame = new JFrame("流动布局管理器");

        Panel panel = new Panel();

        //创建一个流式布局管理器
        FlowLayout flowLayout = new FlowLayout(FlowLayout.LEFT,20,100);

        //添加面板
        jFrame.add(panel);

        //设置布局管理器
        panel.setLayout(flowLayout);

        //按钮
        panel.add(new JButton("按钮1"));
        panel.add(new JButton("按钮2"));
        panel.add(new JButton("按钮3"));
        panel.add(new JButton("按钮4"));

        jFrame.setSize(1000,1000);
        jFrame.setLocation(100, 100);
        jFrame.pack();
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.setVisible(true);

    }

}

实例3:GridLayout(表格布局管理器)

package test;

import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

/*
表格布局管理器(GridLayout)

注意的事项: 如果表格数量不够使用时,默认会多加一列。

GridLayout(4,1,5,10)
前面两个参数(4,1)是指网格的行、列数
后面两个参数(5,10)是指组件的水平、垂直间隔
  (一个组件占一个网格)

方法:
int getRows() 
          获取此布局中的行数。 默认值是1
int getColumns() 
          获取此布局中的列数。 默认值是1
 int getHgap() 
          获取组件之间的水平间距。 默认值是0
int getVgap() 
          获取组件之间的垂直间距。默认值是0

设置
void setRows(int rows) 
          将此布局中的行数设置为指定值。默认值是1
void setColumns(int cols) 
          将此布局中的列数设置为指定值。  默认值是1
 void setHgap(int hgap) 
          将组件之间的水平间距设置为指定值。  默认值是0
*/

public class demo3 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        JFrame jFrame = new JFrame();

        GridLayout gridLayout = new GridLayout(4,4,4,4);

        jFrame.setLayout(gridLayout);

        for(int i=0;i<16;i++){
            jFrame.add(new JButton(i+""));
        }

        jFrame.setSize(1000,1000);
        jFrame.setLocation(100, 100);
        jFrame.pack();
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.setVisible(true);
    }

}
  • 22
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java Swing 的盒子布局管理器(Box Layout Manager)是一种非常常用的布局管理器。它可以将组件垂直或水平地排列,使组件之间具有等距离的间隔。盒子布局管理器使用了一个概念叫做盒子(Box),可以是水平盒子(Horizontal Box)或者垂直盒子(Vertical Box)。在盒子中,每个组件都沿着盒子的方向排列,可以根据需要设置组件之间的间距,也可以设置组件的对齐方式。 使用盒子布局管理器的步骤如下: 1. 创建一个容器对象,例如 JPanel。 2. 调用 JPanel 的 setLayout 方法,设置盒子布局管理器。 3. 创建需要添加到容器中的组件对象。 4. 调用容器的 add 方法,将组件添加到容器中。 下面是一个创建水平盒子的示例代码: ``` JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); JLabel label1 = new JLabel("Label 1"); JLabel label2 = new JLabel("Label 2"); JLabel label3 = new JLabel("Label 3"); panel.add(label1); panel.add(Box.createHorizontalStrut(10)); // 添加一个水平间距 panel.add(label2); panel.add(Box.createHorizontalGlue()); // 添加一个水平可伸缩的空白区域 panel.add(label3); ``` 在这个示例中,创建了一个 JPanel 对象,并设置了水平盒子布局管理器。然后创建了三个 JLabel 组件,分别添加到 JPanel 中,并使用了 Box.createHorizontalStrut 和 Box.createHorizontalGlue 方法添加了水平间距和可伸缩的空白区域。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值