swing-基础Layout布局
布局,掌握元素放置的必须选择,可以采取多种布局的方式组合.在swing中有很多布局可以选择
- 常用布局: BorderLayout,FlowLayout,GridLayout
- 进阶布局: SpringLayout,CardLayout,BoxLayout,GridBagLayout
- 第三方布局: FormLayout,MigLayout
如果对比h5来说
使用table布局 约等于GridLayout,
使用div布局 约等于 BoxLayout
自适应布局 约等于 GridBagLayout
GridBagLayout 不借助第三方工具的话, 可能算最万能的布局了, 但是对于代码的简易性来说, 使用GridBagLayout写布局是很折磨的感觉, 翻看之前很早很早之前写的swing 小工具, 还在类的注释上用字母画上布局. 如果A移动到F之后,需要调整很多布局代码,从那之后就放弃了swing了,如今重新拾起,是因为遇到了MigLayout
如果你读过MigLayout的Api文档,看过示例, 你会觉得so easy.
- 简单的控制位置
- 简单的控制换行
- 简单的控制宽度,高度,
- 简单的绝对定位 /相对定位
- 简单的控制内边距和外边距等等
特意使用migLayout来测试一些常见页面
话外:
当然可能有一些可视化工具 windowBuilder / JFormDesigner 等(可视化拖拽插件 ),我觉得可视化工具偏向于企业开发, 追求效率(简单功能的复制性), ,UI(width/height/color/border-radius)等的一致性,维护性(代码的相似性) 等等
如果喜欢可视化工具开发的话, 建议使用FormLayout布局,当然都是个人爱好
布局的测试代码
import com.formdev.flatlaf.FlatLightLaf;
import com.mynote.core.util.FrameUtil;
import net.miginfocom.swing.MigLayout;import javax.swing.*;
import java.awt.*;/*** 视图布局*/
public class ViewLayoutTab extends AbstractDefaultPanel {@Overridepublic void init() {}/*** render视图*/@Overrideprotected void render() {JTabbedPane layouts = new JTabbedPane(JTabbedPane.LEFT);layouts.addTab("BorderLayout", new BorderLayoutDemo());layouts.addTab("FlowLayout", new JScrollPane(new FlowLayoutDemo()));layouts.addTab("GridLayout", new GridLayoutDemo());layouts.addTab("MigLayout", new MigLayoutDemo());view.add(layouts, "w 800,center");super.add(view);}@Overridepublic void bindEvents() {}private class BorderLayoutDemo extends JPanel {public BorderLayoutDemo() {super.setBorder(BorderFactory.createTitledBorder("BorderLayout布局"));super.setLayout(new BorderLayout());super.add(BorderLayout.NORTH, new JButton("NORTH"));super.add(BorderLayout.SOUTH, new JButton("SOUTH"));super.add(BorderLayout.EAST, new JButton("EAST"));super.add(BorderLayout.WEST, new JButton("WEST"));super.add(BorderLayout.CENTER, new JButton("CENTER"));}}private class FlowLayoutDemo extends JPanel {public FlowLayoutDemo() {super.setBorder(BorderFactory.createTitledBorder("FlowLayout布局"));super.setPreferredSize(new Dimension(600, 500));super.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));for (int i = 0; i < 20; i++) {super.add(new JButton("按钮" + i));}}}private class GridLayoutDemo extends JPanel {public GridLayoutDemo() {super.setBorder(BorderFactory.createTitledBorder("GridLayout布局"));super.setLayout(new GridLayout(7, 3));for (int i = 0; i < 20; i++) {super.add(new JButton("Button " + i));}}}private class MigLayoutDemo extends JPanel {public MigLayoutDemo() {super.setBorder(BorderFactory.createTitledBorder("MigLayout布局"));super.setLayout(new MigLayout("wrap 1"));super.add(createRow("username:"), "w 100%,center");super.add(createRow("password:"), "w 100%,center");super.add(new JButton("提交"), "gapleft 30%");}public JPanel createRow(String name) {JPanel row = new JPanel(new MigLayout());row.add(new JLabel(name, JLabel.RIGHT), "w :40%:100");row.add(new JTextField(""), "w 200:60%:300");return row;}}public static void main(String[] args) {FlatLightLaf.install();FrameUtil.launchTest(new ViewLayoutTab());}
}
swing-基础Layout布局相关推荐
- Element-UI学习之旅-Layout布局
你能获得什么? 如何使用Layout布局. layout布局组件 Elemen-ui对于layout组件的描述为:通过基础的 24 分栏,迅速简便地创建布局.如何理解呢?如下图所示,将页面以行进行分割 ...
- Java Swing基础使用教程
Java Swing是Java语言中的一个GUI工具包,它提供了一系列的组件和容器,可以用于创建各种桌面应用程序.本教程将介绍Java Swing的基本概念.组件和容器,以及如何使用它们来创建一个简单 ...
- Ext JS4序列教程之一 :Layout布局
1.序言 EXT JS4序列教程主要讲解WEB开发中一些常用的组件,例如Tree,Grid,Combobox,form等,EXT JS4的出现为广大程序员带来了福音,我们可以用较少的代码,实现很炫丽的 ...
- 【工作日志】elementUI学习-Layout布局
Layout布局 1.创建布局 通过Col组件的:span属性调整Layout布局,分为24栏. el-row><el-col :span="24"><di ...
- Element之layout布局
layout布局(24分栏布局)用到的标签为:<el-row><el-col> 一:基础布局(通过 row 和 col 组件,并通过 col 组件的 span 属性自由的组合布 ...
- Springboot 使用thymeleaf模板layout布局
使用layout布局前应该在pom文件中导入thymeleaf(dialect)依赖:如下 <properties><project.build.sourceEncoding> ...
- Android开发中遇到的问题(二)——新建android工程的时候eclipse没有生成MainActivity和layout布局...
2019独角兽企业重金招聘Python工程师标准>>> 一.新建android工程的时候eclipse没有生成MainActivity和layout布局 最近由于工作上的原因,开始学 ...
- 一天搞定CSS:支持IE的Layout布局--16
1.BFC和Layout区别: BFC和Layout的作用是一样的,只是对浏览器的支持不同而已. BFC- -标准浏览器所具有的 Layout- -IE浏览器所具有的 BFC详解地址:http://b ...
- EasyUI中layout布局的简单使用
场景 效果 布局选项(Layout Options) 名称 类型 描述 默认值 fit boolean 当设置为 true 时,就设置布局(layout)的尺寸适应它的父容器.当在 'body' 标签 ...
- 【-】WebKit Layout (布局)
WebKit 在渲染页面之前,需要确定各个元素的位置.大小,而这个过程就是layout(布局).下面,我们对layout的主要过程进行一番说明. 一.FrameView::layout方法 Frame ...
最新文章
- 超过efficientnet
- oracle 关系 表 视图_oracle动态视图v$,v_$,gv$,gv_$与x$之间的关系
- 被问概率达99%的面试问题
- 几种替代MATLAB的工具,堪称完美!
- mysql里制造一个错误
- zz 聊聊并发(一)
- 7. Oracle数据加载和卸载
- win10中cmd拒绝访问授权
- Twisted中有个功能叫代理
- vue 引入json地图_前端学习 之 Vue 引入Echarts地图
- cucumber rest assured做接口测试
- Error connecting to node kafka:9092 (id: 1001 rack: null)
- 基于SSM实现的儿童疫苗信息管理系统设计与实现毕业设计源码311930
- python中fun函数求1+2…+n_功能:编写函数fun求1!+2!+3!+ …… +n!的和,在main函 数中由键盘输入n值,并输出运算结果。请编写fun 函数...
- MNE-Python | 开源生理信号分析神器(一)
- 关于微信小程序分享及分享朋友圈、复制链接
- 输入3×4的矩阵 将值为负的位置和值输出
- 操作系统第七章笔记---进程同步
- [贴装专题] 基于halcon的最小二乘法计算吸嘴或机械轴旋转中心
- c语言tan函数源码,tan - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
热门文章
- C++ 对16进制字符串进行偶校验
- 如何看待双非院校本科生,十面字节跳动,最终pass
- 用C++帮别人写的简陋版停车场管理系统,顺便解决VS打包exe出现的问题
- idea 注册码 20190326
- 2015年校招经验总结
- win10小课堂:如何解除宽带限速?
- 物联网毕业设计 智能门禁系统
- “票卡分析专用工具”功能介绍
- Unhandled exception in ***.exe(OLE32.DLL):0xC0000005:Access Violation解决办法
- 05Oracle快速入门,docker安装Oracle,springboot整合Oracle