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

1. 概述

官方JavaDocsApi: javax.swing.BoxLayoutjavax.swing.Box

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

创建水平/垂直箱容器(Box):

// 创建一个水平箱容器
Box hBox = Box.createHorizontalBox();

// 创建一个垂直箱容器
Box vBox = Box.createVerticalBox();

Box 内的组件之间默认没有空隙并居中,如果想在组件之间(或头部/尾部)添加空隙,可以在其中添加一个影响布局的不可见组件。Box 提供了三种用于填充空隙的不可见组件:glue、struts 和 rigidAreas。

创建 胶状(宽/高可伸缩)的不可见组件(glue):

// 创建一个 水平方向胶状 的不可见组件,用于撑满水平方向剩余的空间(如果有多个该组件,则平分剩余空间)
Component hGlue = Box.createHorizontalGlue();

// 创建一个 垂直方向胶状 的不可见组件,用于撑满垂直方向剩余的空间(如果有多个该组件,则平分剩余空间)
Component vGlue = Box.createVerticalGlue();

// 创建一个 水平和垂直方向胶状 的不可见组件,用于撑满水平和垂直方向剩余的空间(如果有多个该组件,则平分剩余空间)
Component glue = Box.createGlue();

创建 固定宽度或高度 的不可见组件(struts):

// 创建一个 固定宽度 的不可见组件(用于水平箱)
Component hStrut = Box.createHorizontalStrut(int width);

// 创建一个 固定高度 的不可见组件(用于垂直箱)
Component vStrut = Box.createVerticalStrut(int height);

创建 固定宽高 的不可见组件(rigidAreas):

// 创建 固定宽高 的不可见组件
Component rigidArea = Box.createRigidArea(new Dimension(int width, int height));

2. 代码实例

package com.xiets.swing;

import javax.swing.*;

public class Main {

  public static void main(String[] args) {
    JFrame jf = new JFrame("测试窗口");
    jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    JButton btn01 = new JButton("Button01");
    JButton btn02 = new JButton("Button02");
    JButton btn03 = new JButton("Button03");
    JButton btn04 = new JButton("Button04");
    JButton btn05 = new JButton("Button05");

    // 创建第一个水平箱容器
    Box hBox01 = Box.createHorizontalBox();
    hBox01.add(btn01);
    hBox01.add(btn02);
    hBox01.add(btn03);

    // 创建第二水平箱容器
    Box hBox02 = Box.createHorizontalBox();
    hBox02.add(btn04);
    hBox02.add(Box.createHorizontalGlue()); // 添加一个水平方向胶状的不可见组件,撑满剩余水平空间
    hBox02.add(btn05);

    // 创建一个垂直箱容器,放置上面两个水平箱(Box组合嵌套)
    Box vBox = Box.createVerticalBox();
    vBox.add(hBox01);
    vBox.add(hBox02);

    // 把垂直箱容器作为内容面板设置到窗口
    jf.setContentPane(vBox);

    jf.pack();
    jf.setLocationRelativeTo(null);
    jf.setVisible(true);
  }

}

结果展示:

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

(0)

相关推荐

  • 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组件布局管理器之FlowLayout(流式布局)入门教程

    本文实例讲述了Java Swing组件布局管理器之FlowLayout(流式布局).分享给大家供大家参考,具体如下: FlowLayout应该是Swing布局管理器学习中最简单.最基础的一个.所谓流式,就是内部控件像水流一样,从前到后按顺序水平排列,直到达到容器的宽度时跳转到第二行.既然是水平排列,那么就存在三种基本的对齐方式:居中对齐(CENTER ).左对齐(LEFT )和右对齐(RIGHT ).然而,FlowLayout还提供两种对齐方式:LEADING,表示控件与容器方向开始边对应:TR

  • Java Swing组件BoxLayout布局用法示例

    本文实例讲述了Java Swing组件BoxLayout布局用法.分享给大家供大家参考,具体如下: BoxLayout 可以把控件依次进行水平或者垂直排列布局,这是通过参数 X_AXIS.Y_AXIS 来决定的.X_AXIS 表示水平排列,而 Y_AXIS 表示垂直排列.BoxLayout 的构造函数有两个参数,一个参数定义使用该 BoxLayout 的容器,另一个参数是指定 BoxLayout 是采用水平还是垂直排列.下面是一个使用 BoxLayout排列控件的例子: JPanel panel

  • JavaSwing FlowLayout 流式布局的实现

    1. 概述 官方JavaDocsApi: java.awt.FlowLayout FlowLayout,流式布局管理器.按水平方向依次排列放置组件,排满一行,换下一行继续排列.排列方向(左到右 或 右到左)取决于容器的componentOrientation属性(该属性属于Component),它可能的值如下: ComponentOrientation.LEFT_TO_RIGHT(默认) ComponentOrientation.RIGHT_TO_LEFT 同一行(水平方向)的组件的对齐方式由

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

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

  • java Swing布局管理之BoxLayout布局

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

  • 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 Swing GridBagLayout网格袋布局的实现

    1. 布局: GridBagLayout 官方JavaDocsApi: java.awt.GridBagLayout GridBagLayout,网格袋布局管理器.它不要求组件的大小相同便可以将组件垂直.水平或沿它们的基线对齐.每个 GridBagLayout 对象维持一个动态的矩形单元格(动态计算出单个单元格的大小),每个组件占用一个或多个的单元格,该单元格被称为 显示区域.每个组件显示区域按 从左到右,从上到下,依次排列. 2. 约束: GridBagConstraints GridBagC

  • 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 BoxLayout箱式布局的实现代码

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

  • 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):按顺序沿指定方向(水

  • Java+Swing实现五子棋游戏的示例代码

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 二.系统展示 三.部分代码 AI.java Chess.java Gobang.java GobangListener.java 一.系统介绍 1.开发环境 开发工具:Eclipse2021 JDK版本:jdk1.8 Mysql版本:8.0.13 2.技术选型 Java+Swing 3.系统功能 实现五子棋游戏,开始游戏,悔棋,认输,退出功能. 二.系统展示 1.首页 2.黑棋走 3.白棋走 三.部分代码 AI.java packag

  • Java+Swing实现医院管理系统的完整代码

    一.系统介绍 本系统实现的以下功能 管理员功能:登录系统.病人信息的增删改查.就医档案的录入.医生信息的增删改查.科室信息的增删改查.收费统计功能.修改密码. 医生功能:登录系统.病人信息的增删改查.医生信息的增删改查.科室信息的增删改查.收费统计功能.修改密码. 收费员功能:价格管理.收费管理.修改密码. JDK版本:1.8 数据库:Mysql8.0.13 数据库用到的表 cashier charge department doctor drugtable manager medical_re

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

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

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

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

  • Eclipse+Java+Swing实现图书管理系统(详细代码)

    目录 一.系统介绍 二.系统展示 1.注册 2.登录 5.管理员端-添加图书类别 6.管理员端-修改图书类别 7.管理员端-添加图书 8.管理员端-修改图书 9.管理员端-管理用户信息 10.管理员端-查询借阅信息 三.部分代码 AdminMainFrm.java BookAddFrm.java BookManagerFrm.java BookInfoFrm.java BookTypeAddFrm.java BookTypeManagerFrm.java BorrowDetailFrm.java

随机推荐