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 ...
随机推荐
- VLC web(http)控制 (1) 设置与登录
VLC3.0 web控制设置步骤: 1.打开偏好设置并显示全部: 2.进入主界面选项,选中Web: 3.进入Lua中设置HTTP密码: 重启软件生效. 这时就可以通过http://127. ...
- windows下fopen,fclose断电数据丢失解决办法
#include <io.h> //在fclose之前调用fflush和_commit,可以有效防止断电数据丢失 fflush(file); _commit(fileno(file)); ...
- GooseFS 在云端数据湖存储上的降本增效实践
| 导语 基于云端对象存储的大数据和数据湖存算分离场景已经被广泛铺开,计算节点的独立扩缩容极大地优化了系统的整体运行和维护成本,云端对象存储的无限容量与高吞吐也保证了计算任务的高效和稳定.然而,云 ...
- .NET Threadpool 饥渴,以及队列是如何使它更糟的
.NET Threadpool 饥渴,以及队列是如何使它更糟的 .NET Threadpool starvation, and how queuing makes it worse - Criteo ...
- Web components vs. React
Web components vs. React - LogRocket Blog Web Components + Compose 是一条更好的路线. 当然,像 molecule 一样用 HTML ...
- Linux驱动开发笔记(七):操作系统MMU介绍,操作系统操作寄存器的原理和Demo
前言 做过单片机的都知道,写驱动是直接代码设置和读取寄存器来控制外设实现基本的驱动功能,而linux操作系统上是由MMU(内存管理单元)来控制,MMU实现了虚拟地址与芯片物理地址的对应,设置和获取 ...
- 配置 HTTP/HTTPS 网络代理
使用Docker的过程中,因为网络原因,通常需要使用 HTTP/HTTPS 代理来加速镜像拉取.构建和使用.下面是常见的三种场景. 为 dockerd 设置网络代理 "docker pu ...
- 龙哥量化:通达信的函数ma均线,ema、sma、dma的计算原理是什么,XMA是未来函数
注意均线也有未来函数,常见的是跨周期的用法,会导致信号闪烁, 不常见的是XMA这个未来函数太坑了, [代写公式,龙哥微信:Long622889] MA.EMA.SMA.DMA.TMA.WMA6种平均算 ...
- 2021年最新js手机号正则验证 最全全部号段
手机号验证正则 /^1[3-9]\d{9}$/ js的例子 isphone.html <html> <body> <input id="Tel" ty ...
- Qt/C++编写onvif工具(搜索/云台/预置位/OSD/录像存储)
一.前言 从最初编写这个工具开始的时间算起来,至少5年多,一直持续完善到今天,这个工具看起来小也不小大也不大,但是也是经历过无数个现场的洗礼,毫不夸张的说,市面上能够遇到的主流的厂商的设备,都测试过, ...