Layout(布局管理器)

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

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

一、布局管理器所属类包

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

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

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

容器 默认布局方式
顶层容器 JFrame BorderLayout(边界布局)
顶层容器 JDialog BorderLayout(边界布局)
顶层容器 JApplet JApplet
中间容器 JPanel FlowLayout(流式布局)

实例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() 获取此布局中的行数。 默认值是1
int getColumns() 获取此布局中的列数。 默认值是1int 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 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() 获取此布局中的行数。 默认值是1
int getColumns() 获取此布局中的列数。 默认值是1int getHgap() 获取组件之间的水平间距。 默认值是0
int getVgap() 获取组件之间的垂直间距。默认值是0设置
void setRows(int rows) 将此布局中的行数设置为指定值。默认值是1
void 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

java-Layout(布局管理器)相关推荐

  1. Java Swing布局管理器(详解版)

    在使用 Swing 向容器添加组件时,需要考虑组件的位置和大小.如果不使用布局管理器,则需要先在纸上画好各个组件的位置并计算组件间的距离,再向容器中添加.这样虽然能够灵活控制组件的位置,实现却非常麻烦 ...

  2. java的布局管理器_Java中提供了几种布局管理器

    近日,很多网友都在关注Java中提供了几种布局管理器这个话题,那么Java中提供了几种布局管理器具体情况是怎么样的呢?Java中提供了几种布局管理器的相关信息有哪些?下面的内容是小编为大家找到的关于J ...

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

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

  4. Java AWT 布局管理器

    目录 布局管理器 1. 流式布局管理器 2. 边界布局管理器 3. 网格布局管理器 4. 网格包布局管理器 5. 卡片布局管理器 6. 自定义布局 布局管理器 在 java.awt 包中提供了 5 种 ...

  5. java中布局管理器flowlayout,在Java中下列()方法可以把JFrame的布局管理器设为FlowLayout类型。...

    在Java中下列()方法可以把JFrame的布局管理器设为FlowLayout类型. 答:jFrame.setLayout(new FlowLayout() ) 在Word 2010的编辑状态,当前编 ...

  6. JAVA 边界布局管理器

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

  7. java 网格布局管理器,Java使用网格组布局管理器

    package com.han; import java.awt.Container; import java.awt.GridBagConstraints; import java.awt.Grid ...

  8. java 网格布局管理器,Java图形化界面设计——布局管理器之GridLayout(网格布局)...

    网格布局特点: l  使容器中的各组件呈M行×N列的网格状分布. l  网格每列宽度相同,等于容器的宽度除以网格的列数. l  网格每行高度相同,等于容器的高度除以网格的行数. l  各组件的排列方式 ...

  9. java swt 布局管理器_JAVA.SWT/JFace: SWT布局管理器

    7.1 布局管理器概述 FillLayout(充满式布局):在单行或单列中放置相同大小的控件,是最简单的布局. RowLayout(行列式布局):在单行或者多行中放置控件,应用了fill.wrap和s ...

  10. Java Swing布局管理器

    引言 在使用 Swing 向容器添加组件时,需要考虑组件的位置和大小.如果不使用布局管理器,则需要先在纸上画好各个组件的位置并计算组件间的距离,再向容器中添加.这样虽然能够灵活控制组件的位置,实现却非 ...

最新文章

  1. PCL基础2:点云赋值
  2. 返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 Web API
  3. VUE从零开始系列(路由钩子及插件开发),呆萌小白上手VUE
  4. 监督学习——通用线性模型
  5. 关于Ubuntu 安装tftp服务器的问题解决
  6. strace oracle
  7. 精讲23种设计模式-基于装饰模式~设计多级缓存框架
  8. spark executor task执行
  9. 海报psd素材模板|周年海报,仪式感值得珍藏
  10. 如何用 ASP.NET Core 实现熔断和降级?
  11. 2019年数据库系统工程师上午真题及答案解析
  12. 计算机绘图课程选用课本,机械制图课程学习指南
  13. 贴片电阻字码阻值对照表
  14. java eclipse导入工程文件_如何在Eclipse软件中导入Java工程文件
  15. UltraEdit 注册机使用说明
  16. python识别图像上的文字
  17. 转换接头PL8000V-B 0-70MPa
  18. java实现注销功能_8.6.2 登录注销功能的实现
  19. hbo切尔诺贝利_HBO Max,HBO NOW和HBO Go有什么区别?
  20. colab如何读取google drive(谷歌云盘)的文件

热门文章

  1. 2023 Oracle JDK下载
  2. 多模态文档LayoutLM版面智能理解技术演进-纪传俊
  3. 关于计算机的小故事英语,感恩节的小故事_关于感恩节的小故事【英文】-太平洋电脑网...
  4. angularjs 动态添加html
  5. python拷贝excel工作簿_几百个Excel表格需要复制粘贴,如何用Python一键搞定?
  6. 【无标题】活期储蓄帐目管理系统问题
  7. 网管交换机与非网管交换机的利弊
  8. Spring Cloud系列(一)入门文章
  9. 使用locust压力测试
  10. 5G时代加速到来,边缘计算何时取代“核心”计算?