【Java AWT 图形界面编程】LayoutManager 布局管理器 ⑦ ( Box 容器 | Box 容器中添加分割 )

news2024/11/18 23:28:05

文章目录

  • 一、Box 容器
  • 二、Box 容器 API
  • 三、Box 容器代码示例
  • 四、Box 容器中添加分割





一、Box 容器



为了 方便使用 BoxLayout 布局 , Swing 中提供了 Box 容器 ;

Box 容器 默认的 布局管理器 就是 BoxLayout ;

通过在 Box 容器构造函数中传入不同的参数 , 可以直接创建 水平排列组件的 Box 容器垂直排列组件的 Box 容器 ;


Box 容器类似于 Android 中的 LinearLayout ;





二、Box 容器 API



Box 容器 API :

  • static Box createHorizontalBox() : 创建 水平排列组件的 Box 容器 ;
    /**
     * 创建一个显示其组件的<code>Box</code>
     * 从左到右。如果你想要一个<code>Box</code>那
     * 的组件方向
     * <code>Box</code>使用构造函数并传入
     * <code>BoxLayout.LINE_AXIS</code>,例如:
     * <pre>
     *   Box lineBox = new Box(BoxLayout.LINE_AXIS);
     * </pre>
     *
     * @return the box
     */
    public static Box createHorizontalBox() {
        return new Box(BoxLayout.X_AXIS);
    }
  • static Box createVerticalBox() : 创建 垂直排列组件的 Box 容器 ;
    /**
     * 创建一个显示其组件的<code>Box</code>
     * 从上到下。如果你想要一个<code>Box</code>那
     * 的组件方向
     * <code>Box</code>使用构造函数并传入
     * <code>BoxLayout.PAGE_AXIS</code>, eg:
     * <pre>
     *   Box lineBox = new Box(BoxLayout.PAGE_AXIS);
     * </pre>
     *
     * @return the box
     */
    public static Box createVerticalBox() {
        return new Box(BoxLayout.Y_AXIS);
    }




三、Box 容器代码示例



代码示例 :

import javax.swing.*;
import java.awt.*;

public class HelloAWT {
    public static void main(String[] args) {
        // I. Frame 默认的布局管理器就是 BorderLayout
        Frame frame = new Frame("AWT 界面编程");

        // III. 设置主要布局

        // 创建第一组按钮
        Box box = Box.createHorizontalBox();
        box.add(new Button("水平按钮 1"));
        box.add(new Button("水平按钮 2"));

        // 创建第二组按钮
        Box box2 = Box.createVerticalBox();
        box2.add(new Button("垂直按钮 1"));
        box2.add(new Button("垂直按钮 2"));

        // 创建存放两组按钮的 Box
        Box box3 = Box.createVerticalBox();
        box3.add(box);
        box3.add(box2);

        // 将存放两组按钮的 Box 容器放入 Frame 窗口
        frame.add(box3);

        // III. 自定设置合适的大小
        frame.pack();
        frame.setVisible(true);
    }
}

执行结果 :
在这里插入图片描述

改变窗口大小 :
在这里插入图片描述





四、Box 容器中添加分割



代码示例 :

import javax.swing.*;
import java.awt.*;

public class HelloAWT {
    public static void main(String[] args) {
        // I. Frame 默认的布局管理器就是 BorderLayout
        Frame frame = new Frame("AWT 界面编程");

        // III. 设置主要布局

        // 创建第一组按钮
        Box box = Box.createHorizontalBox();
        box.add(new Button("水平按钮 1"));
        // 随窗口大小改变而改变
        box.add(Box.createHorizontalGlue());
        box.add(new Button("水平按钮 2"));
        // 固定分割值, 不随窗口大小改变而改变
        box.add(Box.createHorizontalStrut(30));
        box.add(new Button("水平按钮 3"));

        // 创建第二组按钮
        Box box2 = Box.createVerticalBox();
        box2.add(new Button("垂直按钮 1"));
        // 随窗口大小改变而改变
        box2.add(Box.createVerticalGlue());
        box2.add(new Button("垂直按钮 2"));
        // 固定分割值, 不随窗口大小改变而改变
        box2.add(Box.createVerticalStrut(30));
        box2.add(new Button("垂直按钮 3"));

        // 创建存放两组按钮的 Box
        Box box3 = Box.createVerticalBox();
        box3.add(box);
        box3.add(box2);

        // 将存放两组按钮的 Box 容器放入 Frame 窗口
        frame.add(box3);

        // III. 自定设置合适的大小
        frame.pack();
        frame.setVisible(true);
    }
}

执行结果 :

在这里插入图片描述

改变窗口大小后的效果 :

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/163617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java基础语法(一)

注释1.1注释概述注释是在程序指定位置添加的说明性信息注释不参与程序运行&#xff0c;仅起到说明作用1.2注释分类单行注释格式&#xff1a;//注释信息多行注释格式&#xff1a;/*注释信息*/文档注释格式&#xff1a;/**注释信息*/文档注释目前用不上&#xff0c;暂不讲解/* Ja…

C++入门

目录 1. 命名空间 1.1 命名空间的定义 1.2 命名空间的使用 2. C的输入输出 3. 缺省参数 3.1 缺省参数概念 3.2 缺省参数分类 4.函数重载 4.1 函数重载概念 4.2 C支持函数重载的原理——名字修饰 5. 引用 5.1 引用概念 5.2 引用特性 5.3 常引用 5.4 使用场景 5.5 引用…

什么是测试金字塔?如何使用测试金字塔来构建自动化测试体系?

测试金字塔 &#xff08;Test Pyramid&#xff09;是一套使用单元测试&#xff0c;集成测试和端到端测试来构建自动化测试体系的方法。 如下图所示&#xff0c;在金字塔的最下方是单元测试&#xff0c;中段是集成测试&#xff0c;最上方是端到端测试。单元测试实现的成本最低&…

Android 深入系统完全讲解(17)

这个就是我们在初始化的时候给对应的属性设置上下文。chcon 这个可以修改上下文。 我们在遇见类似的属性读取不到的时候&#xff0c;一般操作是&#xff1a; getprop -z 看下属性的上下文&#xff0c;然后 ps -z 看下进程的上下文&#xff0c;然后判断出来是否有对应的 权限&am…

1. PyTorch是什么?

这篇博客将介绍PyTorch深度学习库&#xff0c;包括&#xff1a; PyTorch是什么如何安装PyTorch重要的PyTorch功能&#xff0c;包括张量和自动标记PyTorch如何支持GPU为什么PyTorch在研究人员中如此受欢迎PyTorch是否优于Keras/TensorFlow是否应该在项目中使用PyTorch或Keras/T…

ArcGIS10.2保姆式安装教程,超详细;附安装包

安装前请关闭杀毒软件&#xff0c;系统防火墙&#xff0c;断开网络连接 参考链接&#xff1a;请点击 下载链接&#xff1a; 通过百度网盘分享的文件&#xff1a;ArcGIS10.2zip 链接:https://pan.baidu.com/s/1s_xc1HvmMdo4fnnUo97ldA 提取码:v74k 复制这段内容打开「百度网盘A…

2022年11月下午案例分析真题及答案解析

试题一&#xff08;共15分&#xff09;&#xff08;202211&#xff09; 阅读下列说明和图&#xff0c;回答问题1至问题4&#xff0c;将解答填入答题纸的对应栏内。 【说明】 随着新能源车数量的迅猛增长&#xff0c;全国各地电动汽车配套充电桩急速增长&#xff0c;同时也带…

2023年网络安全比赛--Linux系统渗透提权中职组(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1.使用渗透机对服务器信息收集,并将服务器中SSH服务端口号作为flag提交; 2.使用渗透机对服务器信息收集,并将服务器中主机名称作为flag提交; 3.使用渗透机对服务器信息收集,并将服…

数据科学家必备的 3 个 Jupyter Notebook 扩展

如果您是数据科学家、机器学习工程师或任何其他类型的数据专业人员&#xff0c;您可能已经花了很多时间使用 Jupyter 笔记本。虽然 Jupyter notebooks 已经是一个强大的工具&#xff0c;但还有许多扩展可以进一步增强您的体验。 在本文中&#xff0c;我们将向您介绍三个最有用…

活动星投票创心服务网络评选微信的投票方式线上免费投票

“创心服务”网络评选投票_视频投票评选小程序_线实时投票小程序_微信投票链接创建现来说&#xff0c;公司、企业、学校更多地想借助短视频推广自己。通过微信投票小程序&#xff0c;网友们就可以通过手机拍视频上传视频参加活动&#xff0c;而短视频微信投票评选活动既可以给用…

表单验证的简单实现

表单验证一. 作用二. 需求三. 实现需求一&#xff1a;HTML&#xff1a;JavaScript&#xff1a;需求二&#xff1a;JavaScript&#xff1a;一. 作用 如果没有表单验证&#xff0c;错误的数据就会发往服务端&#xff0c;会造成服务端压力过大&#xff1b; 所以在前端对数据进行过…

ArcGIS基础实验操作100例--实验98计算上游集水区污染值

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 空间分析篇--实验98 计算上游集水区污染值 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff0…

【阶段三】Python机器学习28篇:机器学习项目实战:KMeans算法的基本原理与KMeans聚类分群模型

本篇的思维导图: KMeans模型 KMeans算法的基本原理 KMeans算法名称中的K代表类别数量,Means代表每个类别内样本的均值,所以KMeans算法又称为K-均值算法。KMeans算法以距离作为样本间相似度的度量标准,将距离相近的样本分配至同一个类别。样本间距离的计算方式可以是…

QListWidget 自定义 item的图标和文字的位置

目录前言思路一思路二思路二缺陷思路三思路四前言 楼主并没有完整的解决这个问题&#xff0c;如果你是着急寻找解决方案的就可以划走了&#xff0c;如果你对楼主的解决思路有兴趣&#xff0c;那么可以继续向下阅读。首先需求是可以控制QListWidgetItem的icon和text x轴的位置&…

【树】树、二叉树的基础知识

树定义&#xff1a;树是n&#xff08;n≥0&#xff09;个结点的有限集合T。当n0时&#xff0c;称为空树&#xff1b;当n>0时&#xff0c;该集合满足如下条件&#xff1a; (1) 其中必有一个称为根&#xff08;root&#xff09;的特定结点&#xff0c;它没有直接前驱&#xff…

基于javaweb jsp+servlet学生宿舍管理系统

基于javaweb jspservlet学生宿舍管理系统 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 …

Mysql入门技能树-时间日期函数(一)-练习篇

DAY Joe 需要从日期中提取当天是几号&#xff0c;下列哪些函数可以实现这个功能&#xff1f; 1.DAY 2.DAYOFMONTH 3.DAYOFYEAR 4.TO_DAYS 答案是&#xff1a;C SELECT DAY(2023-02-14)SELECT DAYOFMONTH(2023-02-14)结果都是14 -- 返回 d 是一年中的第几天&#xff0c;范围…

【学习笔记】【Pytorch】九、非线性激活

【学习笔记】【Pytorch】九、非线性激活学习地址主要内容一、前言二、Pytorch的非线性激活三、nn.ReLU类的使用1.使用说明2.代码实现二、nn.Sigmoid类的使用1.使用说明2.代码实现学习地址 PyTorch深度学习快速入门教程【小土堆】. 主要内容 一、前言 我们知道人类大脑中的神…

【RabbitMQ】基础篇,学习纪录+笔记

目录 一.介绍 1.1MQ概述 1.2MQ优势和劣势 1.3常见的 MQ 产品 1.4RabbitMQ简介 1.5RabbitMQ中的相关概念 1.6RabbitMQ的安装 二.快速入门 2.1入门程序 2.2工作模式 2.2.1Work queues 工作队列模式 2.2.2Pub/Sub 订阅模式 2.2.3Routing 路由模式 2.2.4Topics 通配符…

vite 4.0 来了,带你手撕 create-vite 源码

通过本文你将了解到以下内容&#xff1a; 1&#xff0c;npm create 具体执行流程2&#xff0c;minimist、prompts、kolorist三个库3&#xff0c;create-vite 的源码分析 vite源码下载&#xff1a; //复制一份vite源码到自己的本地 git clone https://github.com/vitejs/vit…