【可视化Java GUI程序设计教程】第4章 布局设计
4.1 布局管理器概述
右击窗体,单击快捷菜单中的Set Layout
4.1.2 绝对布局(Absolute Layout)
缩小窗口发现超出窗口范围的按钮看不见
Absolute Layout
4.1.2 空值布局(Null Layout)
4.1.3 布局管理器的属性和组件布局属性
右击布局节点则会在快捷菜单中有一个Properties菜单项(空值布局没有)
单击之后出现此种布局的属性设置窗口

不同布局的管理器的属性有很大的差别

4.2 自由设计
4.2.2 GUI构造器的间距编辑
1、通过拖放
2、使用鼠标滚轮(我用不了)
3、使用菜单设置
4、编辑组件周围的间距
例4.1
将标签设置在无论怎么动都在水平居中的位置
方法:
Left和Right输入相同的值,勾选Resizable
4.2.3 组件对齐、自动调整大小及相同大小
4.3 网格式布局和网格包布局
4.3.1 网格式布局GridLayout
所有网格单元具有相同大小,且不能更改。
可以设置布局管理器的属性,但是组件的“编辑布局空间”命令不可用。
例4.3 采用网格式布局设计一个简单四则运算器
(1)设置该窗体的Bounds属性为[300,300,400,350],perferredSize属性为[400,350]
(2)右击窗体,Set Layout->Grid Layout
(3)
列为4,行为5,垂直间距和水平间距均为2
(4)选择Label控件,在窗口上单击3次。选择Text Field控件,在窗口上单击1次。选择Button控件,在窗口上单击16次。修改组件变量名称和文字。
(5)数字按钮的事件处理
每个数字按钮的事件处理逻辑基本一样,所以编写一个辅助方法numberIt(String s)
private void numberIt(String s) {if (sig == '\0') {str1 += s;jLabel1.setText(str1);jLabel2.setText(str2);jLabelMethod.setText("");} else {str2 += s;jLabel2.setText(str2);}jTextFieldResult.setText("");}
数字“0”按钮
private void jButtonDigiActionPerformed(java.awt.event.ActionEvent evt) {// TODO add your handling code here:if ("".equals(str1) && sig == '\0') {numberIt("0.");} else if ("".equals(str2) && sig != '\0') {numberIt("0.");} else {numberIt(".");}}
其他数字按钮,直接调用numberIt方法
(6)小数点“.”按钮
private void jButtonDigiActionPerformed(java.awt.event.ActionEvent evt) {// TODO add your handling code here:if ("".equals(str1) && sig == '\0') {numberIt("0.");} else if ("".equals(str2) && sig != '\0') {numberIt("0.");} else {numberIt(".");}}
(7)运算符按钮+-*/。它们的处理逻辑基本一样,所以编写一个辅助方法sigIt(char c)
private void sigIt(char c) {if (!"".equals(str1)) {sig = c;jLabelMethod.setText("" + c);jTextFieldResult.setText("");} else {jLabel1.setText(str1);jLabel2.setText(str2);jLabelMethod.setText("");jTextFieldResult.setText("");return;}}
直接调用sigIt方法实现+-*/
运行效果:
4.3.2 网络包布局GridBagLayout
1、Column Width
例子:[0,100,50],则第一列最小宽度为0,第二列最小宽度为00,第三列最小宽度为50。
2、Row Heights(看不懂这个是啥玩意)
如果该属性的值不是null,在计算了所有行的最小高度之后应用到网络包布局。
如果高度数组中的元素个数多于网格的行数,则会增加网络的行数以匹配属性设置。
3、Column Weights与Row Weights
各列(行)所占宽(高)度比例
4.3.3 网格包布局定制器
1、插入与删除行和列
(1)插入
右击,单击InsertRow Before或InsertRow After,即可在当前行的上边或下边插入一个新行
同理,右击,单击InsertColumn Before或InsertColumn After,即可在当前行的左边或右边插入一个新列
(2)删除
右击,单击Delete Row(或Delete Column)
2、设置插入量——Insets
Insets即为组件与其显示区域边缘之间的最小间隙
设置和调整insets有以下两种方法
(1)Insets组中有14个按钮。每单击一次改变1px,按住Ctrl键的同时单击一次改变5px。
(2)
3、设置内部填充——Internal Padding
设置和调整Internal Padding有以下两种方法
(1)每单击一次改变1px,按住Ctrl键的同时单击一次改变5px。
(2)
4、设置组件的位置——Position in Grid
(1)单击组件,按下鼠标左键拖曳
(2)
(3)
AWT文档建议
Grid X和Grid Y不要设置为绝对位置,而应设置为常量GridBagConstraints.RELATIVE。
Position in Grid工具(如下图所示)分别设置Grid X和Grid Y为“相对”(RELATIVE)值。也可以在属性表单区域的Grid X和Grid Y属性右侧下拉列表中选择Relative。
5、设置组件尺寸——Size in Grid(补)
(1)
(2)
(3)
6、设置粗细——Weights
(1)
(2)
7、锚点——Anchor
(1)
(2)
8、填充——Fill
(1)
(2)
4.3.4 网格包布局应用实例
例4.4 设计学生成绩查询界面(补)
界面效果如下:
(1)在ScoreMana窗体中插入5个新行和2个新列
(2)设置上下插入量为30,左右插入量为5。向右拖动直到绿色区域覆盖到第三列。
(3)设置Anchor为Center,Fill为Horizontal,Weight X为1.0,Weight Y为0.5
(4) 第二行第一列网格单元右击,选择如下。设置该标签的Weight Y为0.2。第二行第三列重复上述步骤。第一列的第三、四、五行重复上述步骤。
(5)单击第二行第一列Size in Grid的“水平放大”按钮。
(6)第二列的第三、四、五、六行
(8)第三列的第三、四、五、六行
(9)按住Ctrl键,依次单击第一列的第三、四、五、六行网格单元,
Anchor->East,Weight X->0.3
(10)
(11)
(12)
(13)
4.4 简单布局管理器
4.4.1 流式布局FlowLayout
4.4.2 边框式布局BorderLayout
4.4.3 卡片式布局CardLayout
CardLayout
4.4.4 叠加布局OverlayLayout
1、alignmentX(横轴)和alignmentY(纵轴)
介于0.0~1.0。横轴上0.0代表组件的左侧面,1.0代表组件的右侧面;纵轴上0.0和1.0分别代表组件的顶部和底部。
2、坐标点
例4.6
4.5 盒式布局BoxLayout
4.5.1 组件的最小、最大与首选尺寸
minimunSize:设置组件的最小尺寸。
maximumSize:设置组件的最大尺寸。
preferredSize:设置组件的首选尺寸。
当容器缩小时,一些布局管理器使组件也缩小,但当组件缩小到最小尺寸时便不再缩小,结果只是显示组件的部分区域或容器不再缩小。
4.5.2 BoxLayout的使用与Axis属性
4.5.3 组件alignmentX和alignmentY属性与BoxLayout
4.6 填充器(通常在BoxLayout布局下使用)
组件之间保持适当的距离
4.6.1 Glue(接合性填充器)
用于填充容器中多余空间的组件
其中maximumSize属性值为[32767, 32767],minimumSize和PerferredSize都为[0, 0]
4.6.2 Horizontal Glue(水平接合填充器)
由于组件本身的高度为0,所以对于水平布局它的alignmentY设置没有效果。
4.6.3 Vertical Glue(垂直接合填充器)
由于组件本身的宽度为0,所以对于水平布局它的alignmentX设置没有效果。
4.6.4 Horizontal Strut(可称为水平撑开,即为宽度固定)
4.6.5 Vertical Strut(可称为垂直撑开,即为高度固定)
4.6.6 Rigid Area(刚性区域)
设置宽度和高度值后,单击需要填充的地方
相关文章:

【可视化Java GUI程序设计教程】第4章 布局设计
4.1 布局管理器概述 右击窗体,单击快捷菜单中的Set Layout 4.1.2 绝对布局(Absolute Layout) 缩小窗口发现超出窗口范围的按钮看不见 Absolute Layout 4.1.2 空值布局(Null Layout) 4.1.3 布局管理器的属性和组件布…...
Elasticsearch配置文件
一 前言 在elasticsearch\config目录下,有三个核心的配置文件: elasticsearch.yml,es相关的配置。jvm.options,Java jvm相关参数的配置。log4j2.properties,日志相关的配置,因为es采用了log4j的日志框架。这里以elasticsearch6.5.4版本为例,并且由于版本不同,配置也不…...

运维:mysql常用的服务器状态命令
目录 1、查询当前服务器运行的进程 2、查询最大链接数 3、查询当前链接数 4、展示当前正在执行的sql语句 5、查询当前MySQL当中记录的慢查询条数 6、展示Mysql服务器从启动到现在持续运行的时间 7、查询数据库存储占用情况 8、查询服务器启动以来的执行查询的总次数 9…...

k8s中kubectl陈述式资源管理
1、 理论 1.1、 管理k8s核心资源的三种基本方法 : 1.1.1陈述式的资源管理方法: 主要依赖命令行工具kubectl进行管理 1.1.1.1、优点: 可以满足90%以上的使用场景 对资源的增、删、查操作比较容易 1.1.1.2、缺点: 命令冗长&…...

11 个最值得推荐的 Windows 数据恢复软件
您可能已经尝试过许多免费的恢复程序,但它们都不起作用,对吧?这就是您正在寻找最好的数据恢复软件的原因。 个人去过那里。根据个人的经验,大多数免费软件并不能解决这个问题。有时,当个人在 PC 上运行恢复程序时&…...

Docker从入门到实战
Docker基本概念 1、解决的问题 1、统一标准 应用构建 ○ Java、C、JavaScript ○ 打成软件包 ○ .exe ○ docker build … 镜像应用分享 ○ 所有软件的镜像放到一个指定地方 docker hub ○ 安卓,应用市场应用运行 ○ 统一标准的 镜像 ○ docker run 容器化技术 …...

UE4 材质实操记录
TexCoord的R通道是从左到右的递增量,G通道是从上到下的递增量,R通道减去0.5,那么左边就是【-0.5~0】区间,所以左边为全黑,Abs取绝对值,就达到一个两边向中间的一个递减的效果,G通道同理…...
http协议和Fiddler
文章目录 一、http协议的报文结构1.1http请求和http响应之间的区别1.2http请求1.2.1URL1.2.2方法1.2.3请求头1.2.3.1Host1.2.3.2Content-Length、Content-Type1.2.3.3User-Agent(简称UA)1.2.3.4Referer1.2.3.5Cookie 1.3http响应1.3.1响应状态码1.3.2响应头1.3.2.1Content-Leng…...

李宇航
该篇文章仅用作能直接在百度搜索到我的csdn,进入我的主页,没有实际意义. 进入李宇航博客方法 通过百度搜索"李宇航" 链接: https://blog.csdn.net/llllyh812 1.电脑端进入方法 输入网址链接: https://blog.csdn.net/llllyh812 或者 进入csdn主页,搜索"李宇…...

【JAVA学习笔记】38 - 单例设计模式-静态方法和属性的经典使用
项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter10/src/com/yinhai/final_ 一、什么是设计模式 1.静态方法和属性的经典使用 2.设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格以及解决问题的思考方式。设计模式就像是…...

m1 安装 cocoapods
其实最终解决问题很简单,麻烦的是如果找到解决问题的答案。 前提条件: 命令行工具,不能以rosetta方法打开。 首先安装homebrew 这里不多说了,自行解决。 使用brew安装cocoapods brew install cocoapods, pod --ver…...

【大数据】Kafka 实战教程(一)
Kafka 实战教程(一) 1.Kafka 介绍1.1. 主要功能1.2. 使用场景1.3 详细介绍1.3.1 消息传输流程1.3.2 Kafka 服务器消息存储策略1.3.3 与生产者的交互1.3.4 与消费者的交互 2.Kafka 生产者3.Kafka 消费者3.1 Kafka 消费模式3.1.1 At-most-once(…...

求臻医学:肺癌患者就诊指南及基因检测意义
2023年国家癌症中心公布的最新的数据显示,中国癌症新发病例数前十的癌症分别是:肺癌82万,结直肠癌56万,胃癌48万,乳腺癌42万,肝癌41万,食管癌32万,甲状腺癌22万,胰腺癌12…...

【项目管理】项目中如何进行风险管理
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…...
【算法题】得到K个半回文串的最小修改次数
题目: 给你一个字符串 s 和一个整数 k ,请你将 s 分成 k 个 子字符串 ,使得每个 子字符串 变成 半回文串 需要修改的字符数目最少。 请你返回一个整数,表示需要修改的 最少 字符数目。 注意: 如果一个字符串从左往…...
C# 通过IP获取Mac地址(ARP)
C# 通过IP获取Mac地址 [DllImport("Iphlpapi.dll")] private static unsafe extern int SendARP(Int32 dest, Int32 host, ref Int32 mac, ref Int32 length);[DllImport("Ws2_32.dll")] private static extern Int32 inet_addr(string ip);public static…...

【QT】信号和槽
一、前置示例代码 main.cpp #include "widget.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv); // 应用程序对象a,在Qt中,应用程序对象,有且仅有一个。Widget w; // 窗口对…...
有话则长,无话则短
有话则长,无话则短...
云台/稳定器/无人机姿态控制之欧拉角与四元数控制优缺点分析
基于欧拉角的姿态控制简述: 通过陀螺仪数据解算出姿态:pitch,roll,yaw(相对航向),根据目标 姿态:dst_pitch,dst_roll,dst_yaw计算出误差姿态pitch_err,roll_err,yaw_err。将误差姿态转换为目标速度e_pitch_rate,e_roll_rate,e_yaw_rate。然后…...
Go 工具链详解(六):依赖管理神器
go mod 是 Golang 的官方依赖管理工具,从 Go 1.11 版本开始引入。go mod 使用一种被称为模块(modules)的方式来管理依赖,每个模块都包含了一组 Golang 包。一个 Go 程序可以由多个模块组成,每个模块都可以有自己的 go.…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...