JAVA swing布局管理器实例解析

组件在容器(比如Jframe)中的位置和大小是由布局管理器来决定的。所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理。

种类

java共提供了五种布局管理器,只介绍三种是最常见的布局管理器。

边界布局BorderLayout

边界布局将容器简单的划分为东南西北中5个区域,中间区域最大。JFrame、JDialog默认布局就是BorderLayout。

/*
 * 作者:白客C
 * 时间:2020年03月05日
 * 内容:gui窗体
 * 步骤:
 * 1.继承JFrame
 * 2.定义你需要的组件
 * 3.创建组件
 * 4.添加组件
 * 5.对窗体设置
 */

package com.beekc.www;
import java.awt.*;
import javax.swing.*;

//继承JFrame
public class Beekc extends JFrame{
  //定义需要的组件
  JButton jb1,jb2,jb3,jb4,jb5;

  public static void main(String[] args){
    Beekc beekc = new Beekc();
  }

  //构造函数
  public Beekc(){
    //创建组件
    jb1 = new JButton("中部");
    jb2 = new JButton("北部");
    jb3 = new JButton("东部");
    jb4 = new JButton("南部");
    jb5 = new JButton("西部");

    //添加各个组件
    this.add(jb1,BorderLayout.CENTER);
    this.add(jb2,BorderLayout.NORTH);
    this.add(jb3,BorderLayout.EAST);
    this.add(jb4,BorderLayout.SOUTH);
    this.add(jb5,BorderLayout.WEST);

    //设置窗体属性
    //设置窗口标题
    this.setTitle("边界布局案例");
    //设置窗口大小
    this.setSize(300,200);
    //设置窗体打开的初始位置
    this.setLocation(200,200);
    //一定要设置关闭窗口时一定要关闭程序
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //显示窗体
    this.setVisible(true);
  }

}

运行结果

要是没设置北部或南部,西部、中部、南部就会占取位置;

要是没设置西部、东部,中部就会占取位置;

要是没设置中部,中部是空的;

流式布局FlowLayout

FlowLayout布局,按照组件的添加次序将按按钮组件(当然也可以是别的组件)从左到右放置在容器的边界时,组件将放置在下一行中,FlowLayout可以左对齐、剧中、右对齐的方式排列组件。

注意事项

  Ⅰ.不限制他所管理的组件大小,允许他们有最佳大小

  Ⅱ.当容器被缩放时,组件的位置可能变化,但组件的大小不变

  Ⅲ.默认组件是居中对齐,可以通过FlowLayout(int align) 函数来指定对齐方式

/*
 * 作者:白客C
 * 时间:2020年03月05日
 * 内容:gui窗体
 * 步骤:
 * 1.继承JFrame容器
 * 2.定义你需要的组件
 * 3.创建组件
 * 4.添加组件
 * 5.对窗体设置
 * 6.显示
 */

package com.beekc.www;
import java.awt.*;
import javax.swing.*;

//继承JFrame
public class Beekc extends JFrame{

  //定义组件
  JButton jb1,jb2,jb3,jb4,jb5,jb6;

  public static void main(String[] args){
    Beekc beekc = new Beekc();
  }

  //构造函数
  public Beekc(){
    //创建组件
    jb1 = new JButton("苹果");
    jb2 = new JButton("香蕉");
    jb3 = new JButton("榴莲");
    jb4 = new JButton("菠萝");
    jb5 = new JButton("西瓜");
    jb6 = new JButton("梨子");

    //添加组件
    this.add(jb1);
    this.add(jb2);
    this.add(jb3);
    this.add(jb4);
    this.add(jb5);
    this.add(jb6);

    //设置布局管理器
    //FlowLayout.CENTER 居中对齐
    this.setLayout(new FlowLayout(FlowLayout.CENTER));

    //设置窗体
    this.setTitle("流式布局案例");
    this.setSize(300,110);
    //禁止用户改变窗体大小
    this.setResizable(false);
    this.setLocation(200,200);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //显示窗体
    this.setVisible(true);
  }

}

运行结果

网格布局GridLayout

GirdLayout布局就是将容器分割成多行多列,组件被填充到每个网格中,添加到容器的组件首先放置在左上角的网格中,然后从左到右放置其它的组件,当占满该行的所有网格后,接着继续在下一行从左到右放置组件。

/*
 * 作者:白客C
 * 时间:2020年03月05日
 * 内容:gui窗体
 * 步骤:
 * 1.继承JFrame容器
 * 2.定义你需要的组件
 * 3.创建组件
 * 4.添加组件
 * 5.对窗体设置
 * 6.显示
 */

package com.beekc.www;
import java.awt.*;
import javax.swing.*;

//继承JFrame
public class Beekc extends JFrame{

  //定义组件
  int size = 9;
  JButton[] jb = new JButton[size];

  public static void main(String[] args){
    Beekc beekc = new Beekc();
  }

  //构造函数
  public Beekc(){
    //创建组件
    for(int i = 0 ; i < size ; i++)
    {
      jb[i] = new JButton(String.valueOf(i+1));
    }

    //设置网格布局
    this.setLayout(new GridLayout(3,3,10,10));

    //添加组件
    for(int i = 0 ; i < size ; i++)
    {
      this.add(jb[i]);
    }
    //设置窗体
    this.setTitle("网格布局案例");
    this.setSize(300,300);
    this.setResizable(false);
    this.setLocation(200,200);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //显示
    this.setVisible(true);
  }

}

运行结果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java Swing null绝对布局的实现示例

    1. 概述 官方JavaDocsApi: java.awt.Component,java.awt.Container null,绝对布局.绝对布局没有特定一个布局管理器类来表示,给容器的布局管理器设置为 null,就表示使用绝对布局,即通过设置组件的坐标和宽高来布置组件. 绝对布局需要明确指定每一个组件的坐标和宽高,否则不显示. 对于使用其他布局时给组件设置坐标和宽高,一般会遵循以下两点: 使用其他布局时,如果在窗口显示之后,再添加新组件,则该组件也会被当做绝对布局对待(即需要手动指定坐标和宽高

  • java中Swing五种常见的布局方式

    1. 边界布局(BorderLayout) 2.流式布局(FlowLayout) 3.网格布局(GridLayout) 4.盒子布局(BoxLaYout) 5.空布局(null) 还有其他两种布局,分别是GridBagLayout(网格包布局).CardLayout(卡片布局) 注意:JFrame和JDialog默认布局为BorderLayout,JPanel和Applet默认布局为FlowLayout 边界布局示例代码: import java.awt.BorderLayout; import

  • Java Swing SpringLayout弹性布局的实现代码

    1. 概述 官方JavaDocsApi: javax.swing.SpringLayout javax.swing.SpringLayout.Constraints javax.swing.Spring SpringLayout,弹性布局管理器.使用该布局的容器内的 每一个组件或容器都对应着一个约束,通过该约束定义组件或容器四条边的坐标位置 来实现对组件的布局.该布局主要涉及三个类: SpringLayout.SpringLayout.Constraints.Spring,分别表示 布局管理器.

  • Java Swing GroupLayout分组布局的实现代码

    1. 概述 官方JavaDocsApi: javax.swing.GroupLayout GroupLayout,分组布局管理器.它将组建按层次分组,以决定它们在 Container 中的位置.GroupLayout 主要供生成器使用(生成 并行组 和 串行组).分组由GroupLayout.Group类的实例来完成,每个组可以包含任意数量的元素(Group.Component 或 Gap). GroupLayout支持两种组: 串行组 (sequential group):按顺序沿指定方向(水

  • JavaSwing BorderLayout 边界布局的实现代码

    1. 概述 官方JavaDocsApi: java.awt.BorderLayout BorderLayout,边界布局管理器.它把 Container 按方位分为 5 个区域(东.西.南.北.中),每个区域放置一个组件. BorderLayout 构造方法: // 构造一个组件之间没有间距的新边框布局 BorderLayout() // 构造一个具有指定组件间距的边框布局 BorderLayout(int hgap, int vgap) BorderLayout 表示方位的 5 个常量: Bo

  • JavaSwing GridLayout 网格布局的实现代码

    1. 概述 官方JavaDocsApi: java.awt.GridLayout GridLayout,网格布局管理器.它以矩形网格形式对容器的组件进行布置,把容器按行列分成大小相等的矩形网格,一个网格中放置一个组件,组件宽高自动撑满网格. 以行数和总数优先: 通过构造方法或 setRows 和 setColumns 方法将行数和列数都设置为非零值时,指定的列数将被忽略.列数通过指定的行数和布局中的组件总数来确定.因此,例如,如果指定了三行和两列,在布局中添加了九个组件,则它们将显示为三行三列.

  • Java Swing BoxLayout箱式布局的实现代码

    1. 概述 官方JavaDocsApi: javax.swing.BoxLayout,javax.swing.Box BoxLayout,箱式布局管理器.它把若干组件按水平或垂直方向依次排列放置.Swing 提供了一个实现了 BoxLayout 的容器组件Box.使用 Box 提供的静态方法,可快速创建水平/垂直箱容器(Box),以及填充组件之间空隙的不可见组件.用水平箱和垂直箱的组合嵌套可实现类似于 GridBagLayout 的效果,但没那么复杂. 创建水平/垂直箱容器(Box): // 创

  • Java Swing CardLayout卡片布局的实现示例

    1. 概述 官方JavaDocsApi: javax.swing.CardLayout CardLayout,卡片布局管理器.它将容器中的每个组件看作一张卡片,一次只能看到一张卡片,容器则充当卡片的堆栈,默认显示第一张卡片. CardLayout 构造方法: // 创建一个间距大小为 0 的卡片布局 CardLayout() // 创建一个指定水平/垂直间距大小的卡片布局. CardLayout(int hgap, int vgap) CardLayout 常用方法: // 显示第一张卡片 vo

  • JAVA swing布局管理器实例解析

    组件在容器(比如Jframe)中的位置和大小是由布局管理器来决定的.所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理. 种类 java共提供了五种布局管理器,只介绍三种是最常见的布局管理器. 边界布局BorderLayout 边界布局将容器简单的划分为东南西北中5个区域,中间区域最大.JFrame.JDialog默认布局就是BorderLayout. /* * 作者:白客C * 时间:2020年03月05日 * 内容:gui窗体 * 步骤: * 1.继承JFrame * 2.定义

  • java Swing布局管理之BoxLayout布局

    本文为大家解析java Swing布局管理中的BoxLayout布局,供大家参考,具体内容如下 BoxLayout:可以指定在容器中是否对控件进行水平或者垂直放置,比 FlowLayout 要更为灵活 BoxLayout与其他布局管理器稍有不同,必须向其构造函数中传递容器实例的引用,由该容器使用BoxLayout.另外必须指定BoxLayout中组件的布局方式:垂直排列(按列)或水平排列(按行).用水平组件和垂直组件的不同组合嵌套多面板的作用类似于 GridBagLayout,但没那么复杂. 1

  • Java卡片布局管理器解释及实例

    由 CardLayout 类实现的布局管理器称为卡片布局管理器,用来操纵其所管理容器中包含的容器或组件.每个直接添加到其所管理容器中的容器或组件为一个卡片,最先被添加的容器或组件被认为是第一个卡片,最后被添加的则为最后一个卡片,初次运行时将显示第一个卡片.下面,我们就来通过一个实例看看它是怎么用的. 源码: import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; import java.aw

  • Java弹簧布局管理器使用方法详解

    由 SpringLayout 类实现的布局管理器称为弹簧布局管理器.利用该布局管理器管理组件,当改变窗体的大小时,能够在不改变组件间相对位置的前提下自动调整组件大小,使组件依旧布满整个窗体,从而保证了窗体的整体效果.下面,通过一个实例来看看弹簧布局管理器的使用方法和效果. 弹簧布局管理器以容器和组件的边缘为操作对象,通过为组件和容器边缘以及组件和组件边缘建立约束,实现对组件布局的管理.通过方法 putConstraint(String e1,Conponet c1,int pad,String

  • Java编程使用卡片布局管理器示例【基于swing组件】

    本文实例讲述了Java编程使用卡片布局管理器.分享给大家供大家参考,具体如下: 运行效果: 完整示例代码: package com.han; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JB

  • Java编程使用箱式布局管理器示例【基于swing组件】

    本文实例讲述了Java编程使用箱式布局管理器.分享给大家供大家参考,具体如下: 先来看看运行效果: 完整代码如下: package awtDemo; import java.awt.BorderLayout; import java.awt.Container; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax

  • JAVA布局管理器与面板组合代码实例

    JPanel是面板组件,非顶层容器,一个界面只有可以有一个JFrame窗体组件,但可以有多个Jpanel面板,而JPanel上也可以使用FlowLayout,BorderLayout,GirdLayout等布局管理器,这样可以组合使用达到比较复杂的布局效果. 注意事项 Ⅰ.JPanel是JComponent的子类 Ⅱ.属于容器组件,可以加入别的组件 Ⅲ.默认布局管理器是流式布局(FlowLayout) /* * 作者:白客C * 时间:2020年03月05日 * 内容:gui窗体 * 步骤: *

  • Java BoxLayout(盒子布局)布局管理器解析

    目录 2.4.6 BoxLayout 案例1 案例2 案例3 2.4.6 BoxLayout 为了简化开发,Swing 引入了 一个新的布局管理器 : BoxLayout . BoxLayout 可以在垂直和 水平两个方向上摆放 GUI 组件, BoxLayout 提供了如下一个简单的构造器: 方法名称 方法功能 BoxLayout(Container target, int axis) 指定创建基于 target 容器的 BoxLayout 布局管理器,该布局管理器里的组件按 axis 方向排

  • 一篇文章带你了解Java容器,面板及四大布局管理器应用

    目录 什么是容器? 什么是面板? JPanel面板 JScrollPane面板 什么是布局管理器? 绝对布局管理器 流布局管理器 边界布局管理 网格布局管理器 容器.面板.布局管理器之间的关系 总结 什么是容器? 在Java的GUI界面设计中,关于容器的理解,从字面意思我们就可以认为它是存放控件的地方,而这个地方依托在窗体之上,常用的容器是container. 而关于container容器我们应该有这样的认识:Swing组件中的窗体通常是与容器相关联的,所以在一般情况下,建立完JFrame窗体后

  • Java 最重要布局管理器GridBagLayout的使用方法

    GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直.水平或沿它们的基线对齐. 每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域. 下面就通过一个记事本案例去说明GridBagLayout的使用方法. 分析: 带有箭头的说明可以拉伸的. 4占用4个格

随机推荐