弹簧布局SpringLayout

package Test;
//弹簧布局SpringLayout
//就是先定位好一个组件,其他组件都可以参照已经定位好的组件来定位即可
import javax.swing.*;
import java.awt.*;public class SpringLayoutTest extends JFrame {//设置jpanel的布局管理器为springlayoutSpringLayout springLayout=new SpringLayout();JPanel jPanel=new JPanel(springLayout);JLabel titleLable=new JLabel("文章标题:");JTextField titleTxt=new JTextField();JLabel authorLable =new JLabel("作者:");JTextField authorTxt=new JTextField();JLabel contLable=new JLabel("请输入内容:");JTextArea contArea= new JTextArea(4,10);//创建构造函数public  SpringLayoutTest(){super("弹簧布局springLayout");Container contentPane =getContentPane();//加入到jpanel中titleTxt.setPreferredSize(new Dimension(200,30));jPanel.add(titleLable);jPanel.add(titleTxt);jPanel.add(authorLable);authorTxt.setPreferredSize(new Dimension(200,30));jPanel.add(authorTxt);jPanel.add(contLable);jPanel.add(contArea);jPanel.setBackground(Color.yellow);/*SpringLayout:布局管理器SpringLayout.Constraints:使用弹簧布局的容器里面的组件的布局约束,每个组件对于一个Spring:可以理解为一个可以进行四则运算的整数*///设置水平居中Spring titleLableWidth=Spring.width(titleLable);Spring titleTxtWidt=Spring.width(titleTxt);Spring spaceWidth=Spring.constant(20);  //其间距为20Spring childWidth = Spring.sum(Spring.sum(titleLableWidth,titleTxtWidt),spaceWidth);int offsetX=childWidth.getValue()/2;SpringLayout.Constraints titleLableC = springLayout.getConstraints(titleLable);
//        titleLableC.setX(Spring.constant(100));springLayout.putConstraint(SpringLayout.WEST,titleLable,-offsetX,SpringLayout.HORIZONTAL_CENTER,jPanel);titleLableC.setY(Spring.constant(50));//这是标题文本框:titleTxt西边距离titleLable的东边20px,北边相同SpringLayout.Constraints titleTxtC = springLayout.getConstraints(titleTxt);//edgeName:东南西北  s:表示值Spring titleLableEastSpring= titleLableC.getConstraint(SpringLayout.EAST);titleTxtC.setConstraint(SpringLayout.WEST,Spring.sum(titleLableEastSpring,Spring.constant(20)));titleTxtC.setConstraint(SpringLayout.NORTH,titleLableC.getConstraint(SpringLayout.NORTH));/*设置约束的第二种写法,相对简单e1:要设置组件的哪个边界(edgeName)c1:要设置的组件pad:距离值e2:参照的组件的边界名c2:参照物(组件)*///设置作者Lable  authorLable:东边和titleLable对齐,北边距离titleLable南边20pxspringLayout.putConstraint(SpringLayout.EAST,authorLable,0,SpringLayout.EAST,titleLable);springLayout.putConstraint(SpringLayout.NORTH,authorLable,40,SpringLayout.NORTH,titleLable);//设置authorTxt:authorTxt西边  距离 authorLable的东边20px,北边和authorLable相同springLayout.putConstraint(SpringLayout.WEST,authorTxt,20,SpringLayout.EAST,authorLable);springLayout.putConstraint(SpringLayout.NORTH,authorTxt,0,SpringLayout.NORTH,authorLable);//内容contLablespringLayout.putConstraint(SpringLayout.EAST,contLable,0,SpringLayout.EAST,authorLable);springLayout.putConstraint(SpringLayout.NORTH,contLable,40,SpringLayout.NORTH,authorLable);//contAreaspringLayout.putConstraint(SpringLayout.WEST,contArea,20,SpringLayout.EAST,contLable);springLayout.putConstraint(SpringLayout.NORTH,contArea,0,SpringLayout.NORTH,contLable);//contArea的南边和东边参照jpanelspringLayout.putConstraint(SpringLayout.SOUTH,contArea,-20,SpringLayout.SOUTH,jPanel);springLayout.putConstraint(SpringLayout.EAST,contArea,-20,SpringLayout.EAST,jPanel);contentPane.add(jPanel);setSize(600,400); //窗口大小setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭退出程序setVisible(true);//窗口可视化}public static void main(String[] args) {new SpringLayoutTest();}}

如何巧妙的运用好弹簧布局SpringLayout?相关推荐

  1. JAVA程序开发参考手册

    <!--包装数据类型 ->//javalangInteger--整数类 //bitCount方法--获取二进制补码中位的数量 int i = 10;int count = Integer. ...

  2. Java可视化编程,基于布局管理器的UI设计

    在<事件驱动模型>讲述了如何将用户与功能实现代码联系到一起.怎么样便于用户理解和符合用户的使用习惯? 本篇还是就此问题作分析,站在用户角度上分析UI各组件倒底该如何设计呈现. 优秀的UI会 ...

  3. java-弹簧布局(自适应窗口)

    一.布局管理器 弹簧布局管理器以容器和组件的边缘为操作对象,通过组件与容器边缘以及组件与组件边缘建立约束(建立位置关系),实现对组件的布局管理. 主要通过函数putConstraint(Strting ...

  4. Java Swing布局管理器

    引言 在使用 Swing 向容器添加组件时,需要考虑组件的位置和大小.如果不使用布局管理器,则需要先在纸上画好各个组件的位置并计算组件间的距离,再向容器中添加.这样虽然能够灵活控制组件的位置,实现却非 ...

  5. swing-基础Layout布局

    布局,掌握元素放置的必须选择,可以采取多种布局的方式组合.在swing中有很多布局可以选择 常用布局: BorderLayout,FlowLayout,GridLayout 进阶布局: SpringL ...

  6. java-Layout(布局管理器)

    Layout(布局管理器) 布局管理就是用于指定组件的 摆放位置的.每种布局管理器都有自己的摆放风格. 注意:所有的布局管理器均是针对容器来使用的,包括顶层容器和中间容器. 一.布局管理器所属类包 所 ...

  7. flex弹性布局教程-09-容器属性flex-flow

    本节目标 掌握flex-flow的使用,flex-flow是flex-direction和flex-wrap的合集. 掌握上左右下的布局编写技巧. 内容摘要 本篇介绍了容器属性 flex-flow,是 ...

  8. flowlayout java_Java图形化界面设计——布局管理器之FlowLayout(流式布局)

    前文讲解了JFrame.JPanel,其中已经涉及到了空布局的使用.Java虽然可以以像素为单位对组件进行精确的定位,但是其在不同的系统中将会有一定的显示差异,使得显示效果不尽相同,为此java提供了 ...

  9. java-基于Swing的图形界面设计(上)

    文章目录 常用的组件与容器 JFrame JPanel JButton 布局管理器 FlowLayout BorderLayout GridLayout CardLayout 程序被设计出来,为了方便 ...

最新文章

  1. 原型开发、模型构建和设计反馈在线工具
  2. blog微服务架构代码_聊聊微服务架构
  3. PHP 单一入口程序
  4. IIS添加直接下载的文件类型
  5. 语音识别学习日志 2019-7-14 语音识别基础知识准备2 {EM算法与混合高斯模型(Gaussian mixture model, GMM)}
  6. windows DNS服务器的配置
  7. JEP 尝鲜系列 3 - 使用虚线程进行同步网络 IO 的不阻塞原理
  8. 大致看了下伍德里奇的《计量经济学导论》
  9. C语言运行窗口中的暂停与清屏
  10. 赚一辈子的钱,还是一辈子赚钱? 掌握下一个财富分配周期的法则
  11. 如何创建自己的Cydia源
  12. VS Code、Atom、​Sublime Text:谁才是真正的编辑器之王?
  13. Java 趣事之 a=a++ 和 a=++a
  14. 加密解密技术基础及用OpenSSL创建私有CA
  15. Java用栈实现排序_Java中的栈排序
  16. redhat7安装oracle11gR2之动手安装
  17. 修改Cisco交换机ntp服务器,如何配置Brocade和Cisco光纤交换机的NTP服务器
  18. 大学C语言考试易错知识点总结
  19. Exercise10-Scipy
  20. 你知道的版心和你不知道的版心

热门文章

  1. 剑指Offer_27_字符串的排列
  2. Nginx高可用实战
  3. k8s实战之部署Prometheus+Grafana可视化监控告警平台
  4. could not connect to server: No route to host Is the server running on host 192.168.163.181 and a
  5. Windows 文件一直被占用,无法删除(对应解决方法)
  6. 异常的继承关系与捕获关系(只有直系的继承关系时,下面的类才能被捕获,和辈分无关!!)
  7. 关于ibatis的SQL注入。
  8. 【Yarn】工作机制及任务提交流程
  9. 【Hadoop】MapReduce
  10. Linux-删除文件空间不释放问题解决