• java swing 布局心得(避免忘记)


    swing布局一定要用netbean 的原生布局插件 或eclipse 的window builder 插件
    否则手写太麻烦 也容易错,建议使用window builder
    window builder 设计出来的代码比较简单

    注意: 如果eclipse 编辑器中缺少Design 设计界面
    可以使用 右侧菜单中 open with-> windowbuilder editor 打开

    gridLayout 布局使用

    用在固定宽度和高度的布局场景 
    通常用于菜单栏,按钮组,文档列表等场景	
    例如:制作计算器按键,或者奖品九宫格等
    1) 修改rows和columns属性 可以限定行和列数
    2) 修改rgap  和hgap可以修改行间距和列间距
    
    • 1
    • 2
    • 3
    • 4
    • 5

    absoluteLayout 绝对定位布局

    因为不能自适应窗体大小尺寸,所以比较少用,
    但是 可以用在窗体大小不能调整的情况
    很好用 ,直接拖组件在上面即可
    
    • 1
    • 2
    • 3

    flowLayout 流布局

    其实flow不适合不同尺寸的组件的布局
    比较适合相同尺寸的组件布局 
    通常用在一个固定大小容器中
    而且flow 可以换行布局( 这个特性比较特殊)
    例如: 
    一篇文章的排版效果就比较适合用flow
    或者bar条和菜单条的菜单或按钮组的并排排列效果
    在整体界面布局时用不到,
    因为不同区域的尺寸大小不一样,用流布局非常丑
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    borderlayout 布局

    默认是border 布局 分上下左右 中	
    上下左右区域的放置组件
    如果设置首选尺寸 区域大小是可以固定的
    中区的组件 尺寸可以跟随容器大小变化自动调整
    
    • 1
    • 2
    • 3
    • 4

    boxLayout 布局

    需要水平排列或者垂直排列的场景
    flow布局只能从头到尾或者从尾到头, 
    而box布局可以垂直排列,
    可用的地方其实也是在某个单一的容器内部
    不适合用于窗体的整体布局
    水平排列 x-axis 
    垂直排列y-axis
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    gridbagLayout 布局

    既有 grid表格布局的特性, 又可以单独调整行高和列宽 类似于xls表格
    同时还具有列头和行头的效果
    类似于python中的grid布局
    创建单元格样式
    GridBagConstraints 单元格 = new GridBagConstraints();
    .gridx = 0; 表格的列坐标
    .gridy = 0; 表格的行坐标
    .insets = new Insets(0, 0, 5, 0);设置单元格边距
    .fill = GridBagConstraints.BOTH; 单元格填充效果
    
    panel.add(btn组件, 单元格);填入组件到容器中
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    GroupLayout 默认的布局对象 ,比较复杂

    它的布局原理是 ,
    
    • 1

    先按照水平和垂直 分组排列设计

    	.setHorizontalGroup( //设置水平组排列
    	.setVerticalGroup( //设置垂直组排列		
    
    • 1
    • 2

    然后在不同排列表中 添加 组

    		 .createParallelGroup( //创建平行组
    		 .createSequentialGroup() //创建顺序组	
    		 .addGroup() 添加组
    		 .addComponent 添加组件
    
    • 1
    • 2
    • 3
    • 4
    最后组件的前面,之间或者后面 ,填充不同类型的间隙块
    		 	.addGap(),添加固定间隙块
    			.addPreferredGap 添加首选且可调整间隙块
    			.addContainerGap 添加自适应间隙块
    
    • 1
    • 2
    • 3
  • 相关阅读:
    你的哪些骚操作会导致Segmentation Fault😂
    消失的数字C/C++
    C语言三位数求解(ZZULIOJ1076:三位数求解)
    什么原因导致香港服务器变慢?解决办法
    【微服务】Day04
    每日一练 | 华为认证真题练习Day135
    Java 类型转换和运算符计算
    Leetcode 654.最大二叉树
    C#/Unity3D 单例模板(单例属性模板)
    Halcon Deep Learning Classification 和 C# 客户端调用模型进行识别
  • 原文地址:https://blog.csdn.net/zdyah/article/details/126308187