当前位置: 首页 > 编程笔记 >

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

刘选
2023-03-14
本文向大家介绍Java Swing BoxLayout箱式布局的实现代码,包括了Java Swing BoxLayout箱式布局的实现代码的使用技巧和注意事项,需要的朋友参考一下

1. 概述

官方JavaDocsApi: javax.swing.BoxLayout,javax.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);
  }

}

结果展示:

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

 类似资料:
  • 我正在尝试在Android系统中实现拉刷新功能。为此,我最终使用了支持库中的SwipeRefresLayout。但它并没有像我想的那样工作。 我需要在片段中实现它。这是fragment_home的代码。xml 这是放置在缅因州ctivity.java内部的碎片 但这给出了一个错误,就像它无法找到SwipeRefresh布局的类一样。你能建议我如何在这里实施吗??

  • 本文向大家介绍JavaScript实现瀑布流布局的3种方式,包括了JavaScript实现瀑布流布局的3种方式的使用技巧和注意事项,需要的朋友参考一下 前言 今天逛闲鱼的时候观察到每一行的高度不是相同的,经了解才知道原来这是一种瀑布流布局,感觉挺有意思,于是决定研究一下,在网上也找了一些方案,实现瀑布流大概有3种方式。 一、JS 实现瀑布流 思路分析 1、瀑布流布局的特点是等宽不等高。 2、为了让

  • 本文向大家介绍基于Android代码实现常用布局,包括了基于Android代码实现常用布局的使用技巧和注意事项,需要的朋友参考一下 关于 android 常用布局,利用 XML 文件实现已经有很多的实例了。但如何利用代码实现呢?当然利用代码实现没有太大的必要,也是不提倡的,但我觉得利用代码实现这些布局,可以更好的了解 SDK API ,所以在此也整理一些,和大家分享一下。 首先看一下,布局所对应的

  • 本文向大家介绍一行JavaScript代码如何实现瀑布流布局,包括了一行JavaScript代码如何实现瀑布流布局的使用技巧和注意事项,需要的朋友参考一下 写在前面 一行 JavaScript 代码究竟可以完成什么布局?今天我们就来用一行 JavaScript 代码完成经典布局的一种,瀑布流布局。 所谓的瀑布流布局就是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动

  • 本文向大家介绍js瀑布流布局的实现,包括了js瀑布流布局的实现的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现瀑布流布局的具体代码,供大家参考,具体内容如下 原理: 1、瀑布流布局,要求进行布局的元素等宽,然后计算元素的宽与浏览器的宽度之比,得到需要布置的列数。 2、创建一个数组,长度为列数,数组元素为每一列已布置元素的总高度。(一开始为0)。 3、将未布置的元素,依次布置到

  • 本文向大家介绍Android FlowLayout流式布局实现详解,包括了Android FlowLayout流式布局实现详解的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android FlowLayout流式布局的具体代码,供大家参考,具体内容如下 最近使用APP的时候经常看到有 这种流式布局 ,今天我就跟大家一起来动手撸一个这种自定义控件. 首先说一下自定义控件的流程: 自定