java-Layout(布局管理器)

发布时间:2025-12-09 20:41:13 浏览次数:4

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 stubnew 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 每一行组件都应该是左对齐的,或者0RIGHT 每一行组件都应该是右对齐的,或者2CENTER 每一行组件都应该是居中的,或者12. panel默认的局部管理器就是FlowLayout.方法:int getRows() 获取此布局中的行数。 默认值是1int getColumns() 获取此布局中的列数。 默认值是1int getHgap() 获取组件之间的水平间距。 默认值是0int getVgap() 获取组件之间的垂直间距。默认值是0设置void setRows(int rows) 将此布局中的行数设置为指定值。默认值是1void setColumns(int cols) 将此布局中的列数设置为指定值。 默认值是1void setHgap(int hgap) 将组件之间的水平间距设置为指定值。 默认值是0*/public class demo2 {public static void main(String[] args) {// TODO Auto-generated method stubJFrame 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() 获取此布局中的行数。 默认值是1int getColumns() 获取此布局中的列数。 默认值是1int getHgap() 获取组件之间的水平间距。 默认值是0int getVgap() 获取组件之间的垂直间距。默认值是0设置void setRows(int rows) 将此布局中的行数设置为指定值。默认值是1void setColumns(int cols) 将此布局中的列数设置为指定值。 默认值是1void setHgap(int hgap) 将组件之间的水平间距设置为指定值。 默认值是0*/public class demo3 {public static void main(String[] args) {// TODO Auto-generated method stubJFrame 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);}}

转自:java-Layout(布局管理器)_hyty的博客-CSDN博客_java layout 

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477