JavaGUI - [04] BoxLayout
题记部分
一、简介
为了简化开发,Swing引入了一个新的布局管理器:BoxLayout。BoxLayout可以在垂直和水平两个方向上摆放GUI组件,BoxLayout提供了如下一个简单的构造器:
BoxLayout(Container target,int axis)
指定创建基于target容器的BoxLayout布局管理器,该布局管理器里的组件按axis方向排列。其中axis有BoxLayout.X_AXIS(横向)和BoxLayout.Y_AXIS(纵向)两个方向。
案例一

垂直方向排列组件
package com.harley.layout;
import javax.swing.*;
import java.awt.*;
/**
* @author harley
* @date 2024/05/06 15:15
*/
public class s09_BoxLayoutDemo {
public static void main(String[] args) {
Frame frame = new Frame("BoxLayoutDemo");
// 1. 基于frame容器,创建一个BoxLayout对象
BoxLayout boxLayout = new BoxLayout(frame, BoxLayout.Y_AXIS);
// 2. 把BoxLayout对象设置给frame
frame.setLayout(boxLayout);
// 4. 往frame中添加两个按钮组件
frame.add(new Button("按钮1"));
frame.add(new Button("按钮2"));
frame.pack();
frame.setVisible(true);
}
}
案例二
在java.swing包中,提供了一个新的容器Box,该容器的默认布局管理器就是BoxLayout,大多数情况下,shiyongBox容器去容纳多个GUI组件,然后再把Box容器作为一个组件,添加到其他的容器中,从而形成整体窗口布局。
static Box createHorizontalBox():创建一个水平排列的Box容器
static Box createVerticalBox():创建一个垂直排列的Box容器

代码
package com.harley.layout;
import javax.swing.*;
import java.awt.*;
/**
* @author harley
* @date 2024/05/06 15:25
*/
public class s10_BoxLayoutDemo2 {
public static void main(String[] args) {
// 1.创建Frame对象
Frame frame = new Frame("BoxLayout");
// 2. 创建一个水平排列的容器
Box hBox = Box.createHorizontalBox();
// 3. 往当前容器中添加两个按钮
hBox.add(new Button("水平按钮1"));
hBox.add(new Button("水平按钮2"));
// 4. 创建一个垂直排列的容器
Box vBox = Box.createVerticalBox();
// 5. 往当前容器中添加两个按钮
vBox.add(new Button("垂直按钮1"));
vBox.add(new Button("垂直按钮2"));
// 6. 把两个Box容器添加到Frame中展示
frame.add(hBox, BorderLayout.NORTH);
frame.add(vBox);
frame.pack();
frame.setVisible(true);
}
}
二、进阶
被BoxLayout管理的容器中的组件之间是没有间隔的,如何给组件设置间距?
static Component createHorizontalGlue():创建一条水平Glue(可在两个方向上同时拉伸的间距)
static Component createVerticalGlue():创建一条垂直Glue(可在两个方向上同时拉伸的间距)
static Component createHorizontalStrut(int width)
创建一条指定宽度(宽度固定,无法拉伸)的水平Strut(可在垂直方向上拉伸的间距)
static Component createVerticalStrut(int height)
创建一条指定高度(高度固定,无法拉伸)的垂直Strut(可在水平方向上拉伸的间距)
案例三
三、标题
— 要养成终身学习的习惯 —
JavaGUI - [04] BoxLayout的更多相关文章
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- Ubuntu 14.04中Elasticsearch集群配置
Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...
- win8.1硬盘安装ubuntu14.04双系统
在网上找了很多方法都失败了,原因是大多数方法都是用mbr方式安装的,如grub4dos,easybcd.以至于连自己都怀疑win8能不能用硬盘安装,差点就去买个u盘来安装了,就在打算放弃的时候在ubu ...
- 使用win10远程控制ubuntu16.04
使用win10远程控制ubuntu16.04,网上很多需要安装xfce桌面的.今天介绍一下,不需要安装其他桌面,使用Ubuntu16.04自带桌面,漂亮美观. Ubuntu16.04端: 1.打开终端 ...
- ubuntu14.04下安装node.js
在网上查了下,起初是下载了一个node-v0.12.7-linux-x64.tar.gz,解压在/home/node路径下,然后在/etc/profile中添加如下命令: export NODE_HO ...
- mono3.2和monodevelop4.0在ubuntu12.04上两天的苦战
首先第一步是设置ubuntu server 12.04版更新源,推荐中科大的比较快:deb http://debian.ustc.edu.cn/ubuntu/ precise main multive ...
- Jexus Web Server 完全傻瓜化图文配置教程(基于Ubuntu 12.04.3 64位)[内含Hyper-v 2012虚拟机镜像下载地址]
1. 前言 近日有感许多新朋友想尝试使用Jexus,不过绝大多数都困惑徘徊在Linux如何安装啊,如何编译Mono啊,如何配置Jexus啊...等等基础问题,于是昨日向宇内流云兄提议,不如搞几个配置好 ...
- Ubuntu14.04配置Mono+Jexus
总所周知,ASP.NET是微软公司的一项技术,是一个网站服务端开发的一种技术,它可以在通过HTTP请求文档时再在Web服务器上动态创建它们,就是所谓动态网站开发,它依赖运行于 IIS 之中的程序 .但 ...
- deepsooncms在Ubuntu 14.04上部署教程
deepsooncms在Ubuntu 14.04上部署教程 一.安装mono1.在命令行运行sudo apt-key adv --keyserver keyserver.ubuntu.com --re ...
- 在 Ubuntu 15.04 中使用 ubuntu-make、Eclipse 4.4、Java 8 以及 WTP
Ubuntu 今天发布新版本了 其实昨天(2015-04-23)我就看到了 Ubuntu 发布新版本的新闻,下班后回家的第一件事就是访问 Ubuntu 的官网,很可惜,没有提供下载.今天(2015-0 ...
随机推荐
- 服务拆分之《Dubbo服务跨云通信》
2022年10月开始,公司从阿里请来的架构师将全力推进服务拆分这个计划.实际上这个计划早就提上日程了,只是没有一个带头大哥带着把这个事情搞起来,因为这个系统太庞大了,还非常的复杂,当时就没有哪一个人是 ...
- 构建模块化 CLI:Lerna + Commander 打造灵活的基础脚手架
在现代软件开发中,创建 定制化的命令行工具(CLI) 已成为满足公司业务需求的关键一环.这类工具可以辅助执行诸如代码检查.项目初始化等任务.为了提高开发效率并简化维护过程,我们将功能模块化,并通过多个 ...
- Zookeeper Java API操作流程
首先需要配置一台Zookeeper服务器 pom文件 <dependencies> <!-- https://mvnrepository.com/artifact/org.a ...
- 【服务器安全问题】双防火墙有什么意义?SSH暴力破解如何防范
发现我的服务器有大量的陌生IP尝试SSH登录,似乎想暴力破解. 我个人习惯是服务器提供商开放了所有端口的,同时也没有开启运维软件提供的防火墙emm 这倒是让我想到了 一般服务器提供商(比如阿里云.华为 ...
- 【MyBatis】学习笔记11:解决字段名和属性的映射关系
[Mybatis]学习笔记01:连接数据库,实现增删改 [Mybatis]学习笔记02:实现简单的查 [MyBatis]学习笔记03:配置文件进一步解读(非常重要) [MyBatis]学习笔记04:配 ...
- zstd - 一种由Facebook使用的快速数据压缩算法
Zstandard (也被称为zstd )是一款免费的开源,快速实时数据压缩程序,具有更好的压缩比,由Facebook开发. 它是用C语言编写的无损压缩算法 (在Java中有一个重新实现) - 因此它 ...
- Qt/C++摄像头采集/二维码解析/同时采集多路/图片传输/分辨率帧率可调/自动重连
一.前言 本地摄像头的采集可以有多种方式,一般本地摄像头会通过USB的方式连接,在嵌入式上可能大部分是CMOS之类的软带的接口,这些都统称本地摄像头,和网络摄像头最大区别就是一个是通过网络来通信,一个 ...
- Qt编写可视化大屏电子看板系统30-模块8物料管理
一.前言 物料管理模块包括库存占比.主要零件库存状况子模块,其中库存占比采用自定义控件环形进度条展示,总共有多种库存,具体根据数据库中的名称展示不同的界面,当库存数不够的时候,对应环形进度条颜色红色显 ...
- Qt开发经验小技巧151-155
当Qt中编译资源文件太大时,效率很低,或者需要修改资源文件中的文件比如图片.样式表等,需要重新编译可执行文件,这样很不友好,当然Qt都给我们考虑好了策略,此时可以将资源文件转化为二进制的rcc文件,这 ...
- 即时通讯技术文集(第26期):实时音视频技术合集(Part1) [共16篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第26 期. [- 1 -] 实时语音聊天中的音频处理与编码压缩技术简述 [链接] http:/ ...