题记部分

一、简介

  为了简化开发,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的更多相关文章

  1. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  2. Ubuntu 14.04中Elasticsearch集群配置

    Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...

  3. win8.1硬盘安装ubuntu14.04双系统

    在网上找了很多方法都失败了,原因是大多数方法都是用mbr方式安装的,如grub4dos,easybcd.以至于连自己都怀疑win8能不能用硬盘安装,差点就去买个u盘来安装了,就在打算放弃的时候在ubu ...

  4. 使用win10远程控制ubuntu16.04

    使用win10远程控制ubuntu16.04,网上很多需要安装xfce桌面的.今天介绍一下,不需要安装其他桌面,使用Ubuntu16.04自带桌面,漂亮美观. Ubuntu16.04端: 1.打开终端 ...

  5. ubuntu14.04下安装node.js

    在网上查了下,起初是下载了一个node-v0.12.7-linux-x64.tar.gz,解压在/home/node路径下,然后在/etc/profile中添加如下命令: export NODE_HO ...

  6. mono3.2和monodevelop4.0在ubuntu12.04上两天的苦战

    首先第一步是设置ubuntu server 12.04版更新源,推荐中科大的比较快:deb http://debian.ustc.edu.cn/ubuntu/ precise main multive ...

  7. Jexus Web Server 完全傻瓜化图文配置教程(基于Ubuntu 12.04.3 64位)[内含Hyper-v 2012虚拟机镜像下载地址]

    1. 前言 近日有感许多新朋友想尝试使用Jexus,不过绝大多数都困惑徘徊在Linux如何安装啊,如何编译Mono啊,如何配置Jexus啊...等等基础问题,于是昨日向宇内流云兄提议,不如搞几个配置好 ...

  8. Ubuntu14.04配置Mono+Jexus

    总所周知,ASP.NET是微软公司的一项技术,是一个网站服务端开发的一种技术,它可以在通过HTTP请求文档时再在Web服务器上动态创建它们,就是所谓动态网站开发,它依赖运行于 IIS 之中的程序 .但 ...

  9. deepsooncms在Ubuntu 14.04上部署教程

    deepsooncms在Ubuntu 14.04上部署教程 一.安装mono1.在命令行运行sudo apt-key adv --keyserver keyserver.ubuntu.com --re ...

  10. 在 Ubuntu 15.04 中使用 ubuntu-make、Eclipse 4.4、Java 8 以及 WTP

    Ubuntu 今天发布新版本了 其实昨天(2015-04-23)我就看到了 Ubuntu 发布新版本的新闻,下班后回家的第一件事就是访问 Ubuntu 的官网,很可惜,没有提供下载.今天(2015-0 ...

随机推荐

  1. Qt开源作品19-通用数据库翻页查询

    一.前言 在Qt与数据库结合编程的过程中,记录一多,基本上都需要用到翻页查看记录,翻页有个好处就是可以减轻显示数据的表格的压力,不需要一次性将数据库表的记录全部显示,也基本上没有谁在一页上需要一次性显 ...

  2. 模拟数据生成器mock.js入门

    1.在某一指定目录下,按下shift+鼠标右键,,点击"在此处打开Powershell窗口(S)",启动命令行窗口.如下图: 2.在窗口中输入以下命令以便创建项目:vue crea ...

  3. 从韩国客机事故看Java异常处理机制:保障程序的“安全着陆”

    当地时间12月29日上午9时,韩国济州航空编号7C2216航班坠毁于韩国务安机场,除救出的两人外,预计事故其余人员全部遇难.据了解,失事客机因起落架故障准备进行机腹着陆,在此过程中发生事故,最终与机场 ...

  4. 使用GPIO判断网线拔插

    USB网卡和以太网交换机"常连"后,增加交换机插拔网线判断机制 这个项目已经做了小半年了,客户是一个做智能电话机的.所谓的智能电话就是一台可以插网线.电话线,外观却是座机的手机. ...

  5. 记录以下uniapp写小程序然后进行图片上传压缩

    今天记录一下uniapp写小程序上传图片压缩的功能 首先定义上传图片的方法 然后res.tempFilePath[0]就是图片的临时路径 其次定义压缩图片然后获取压缩后图片大小的方法,方法使用canv ...

  6. 如何监控Linux服务器资源使用情况

    ---  好的方法很多,我们先掌握一种  --- [背景] 在做性能验证时(其他情况通用),需要监控服务器资源的使用情况,例如cpu,内存等信息 我们就可以简单通过shell脚本后台运行,持续监控需要 ...

  7. 使用GTD工作法提升效率

    前言 近年来随着工作.副业的开展,每天要做的事情越来越多,而且还积攒了很多工作,每天大脑被各种事情充斥着,乱糟糟的,不仅效率很低,还很容易导致焦虑. 为此我一直有在寻找合适的项目管理工具,也看了一些相 ...

  8. MVCC基本原理

    在介绍MVCC概念之前,我们先来想一下数据库系统里的一个问题:假设有多个用户同时读写数据库里的一行记录,那么怎么保证数据的一致性呢?一个基本的解决方法是对这一行记录加上一把锁,将不同用户对同一行记录的 ...

  9. Flume架构与源码分析-整体架构

    最近在学习Flume源码,所以想写一份Flume源码学习的笔记供需要的朋友一起学习参考. 1.Flume介绍 Flume是cloudera公司开源的一款分布式.可靠地进行大量日志数据采集.聚合和并转移 ...

  10. linux 亲测wget安装7.3 liferay流程

    liferay wget 7.3版本安装1. 下载软件包 sudo wget https://sourceforge.net/projects/lportal/files/Liferay%20Port ...