布局,掌握元素放置的必须选择,可以采取多种布局的方式组合.在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布局相关推荐

  1. Element-UI学习之旅-Layout布局

    你能获得什么? 如何使用Layout布局. layout布局组件 Elemen-ui对于layout组件的描述为:通过基础的 24 分栏,迅速简便地创建布局.如何理解呢?如下图所示,将页面以行进行分割 ...

  2. Java Swing基础使用教程

    Java Swing是Java语言中的一个GUI工具包,它提供了一系列的组件和容器,可以用于创建各种桌面应用程序.本教程将介绍Java Swing的基本概念.组件和容器,以及如何使用它们来创建一个简单 ...

  3. Ext JS4序列教程之一 :Layout布局

    1.序言 EXT JS4序列教程主要讲解WEB开发中一些常用的组件,例如Tree,Grid,Combobox,form等,EXT JS4的出现为广大程序员带来了福音,我们可以用较少的代码,实现很炫丽的 ...

  4. 【工作日志】elementUI学习-Layout布局

    Layout布局 1.创建布局 通过Col组件的:span属性调整Layout布局,分为24栏. el-row><el-col :span="24"><di ...

  5. Element之layout布局

    layout布局(24分栏布局)用到的标签为:<el-row><el-col> 一:基础布局(通过 row 和 col 组件,并通过 col 组件的 span 属性自由的组合布 ...

  6. Springboot 使用thymeleaf模板layout布局

    使用layout布局前应该在pom文件中导入thymeleaf(dialect)依赖:如下 <properties><project.build.sourceEncoding> ...

  7. Android开发中遇到的问题(二)——新建android工程的时候eclipse没有生成MainActivity和layout布局...

    2019独角兽企业重金招聘Python工程师标准>>> 一.新建android工程的时候eclipse没有生成MainActivity和layout布局 最近由于工作上的原因,开始学 ...

  8. 一天搞定CSS:支持IE的Layout布局--16

    1.BFC和Layout区别: BFC和Layout的作用是一样的,只是对浏览器的支持不同而已. BFC- -标准浏览器所具有的 Layout- -IE浏览器所具有的 BFC详解地址:http://b ...

  9. EasyUI中layout布局的简单使用

    场景 效果 布局选项(Layout Options) 名称 类型 描述 默认值 fit boolean 当设置为 true 时,就设置布局(layout)的尺寸适应它的父容器.当在 'body' 标签 ...

  10. 【-】WebKit Layout (布局)

    WebKit 在渲染页面之前,需要确定各个元素的位置.大小,而这个过程就是layout(布局).下面,我们对layout的主要过程进行一番说明. 一.FrameView::layout方法 Frame ...

最新文章

  1. 超过efficientnet
  2. oracle 关系 表 视图_oracle动态视图v$,v_$,gv$,gv_$与x$之间的关系
  3. 被问概率达99%的面试问题
  4. 几种替代MATLAB的工具,堪称完美!
  5. mysql里制造一个错误
  6. zz 聊聊并发(一)
  7. 7. Oracle数据加载和卸载
  8. win10中cmd拒绝访问授权
  9. Twisted中有个功能叫代理
  10. vue 引入json地图_前端学习 之 Vue 引入Echarts地图
  11. cucumber rest assured做接口测试
  12. Error connecting to node kafka:9092 (id: 1001 rack: null)
  13. 基于SSM实现的儿童疫苗信息管理系统设计与实现毕业设计源码311930
  14. python中fun函数求1+2…+n_功能:编写函数fun求1!+2!+3!+ …… +n!的和,在main函 数中由键盘输入n值,并输出运算结果。请编写fun 函数...
  15. MNE-Python | 开源生理信号分析神器(一)
  16. 关于微信小程序分享及分享朋友圈、复制链接
  17. 输入3×4的矩阵 将值为负的位置和值输出
  18. 操作系统第七章笔记---进程同步
  19. [贴装专题] 基于halcon的最小二乘法计算吸嘴或机械轴旋转中心
  20. c语言tan函数源码,tan - [ C语言中文开发手册 ] - 在线原生手册 - php中文网

热门文章

  1. C++ 对16进制字符串进行偶校验
  2. 如何看待双非院校本科生,十面字节跳动,最终pass
  3. 用C++帮别人写的简陋版停车场管理系统,顺便解决VS打包exe出现的问题
  4. idea 注册码 20190326
  5. 2015年校招经验总结
  6. win10小课堂:如何解除宽带限速?
  7. 物联网毕业设计 智能门禁系统
  8. “票卡分析专用工具”功能介绍
  9. Unhandled exception in ***.exe(OLE32.DLL):0xC0000005:Access Violation解决办法
  10. 05Oracle快速入门,docker安装Oracle,springboot整合Oracle