一、布局管理器

  • 弹簧布局管理器以容器和组件的边缘为操作对象,通过组件与容器边缘以及组件与组件边缘建立约束(建立位置关系),实现对组件的布局管理。
  • 主要通过函数putConstraint(Strting s1,Component c1,int len,Strting s2,Component c2);当s2在s1的北方或西方时,len为正数,当s2在s1的南方或东方时,len为负数。
参数 说明
s1 需要参考的组件(需要布局的组件)对象的具体需要参考的边
c1 需要参考的组件(需要布局的组件)对象
s2 被参考的组件对象的具体需要参考的边
c2 被参考的组件对象或组件所属的容器对象
len 两条边之间的距离,即两对象的某个边缘的间隔
  • 弹簧布局方式界面的布局会根据窗口大小的拉伸进行调整,但是组件的相对位置不会改变。
  • 通过这种方式,在水平方向或垂直方向上的任意两条边之间都可以建立约束,以实现组件的自适应变化。
  • 组件的大小受其文本大小的影响,有时可能或破坏布局,这可以调整文本长度来适应或直接设置组件大小,使布局更美观。

二、用法及效果

  • 我们所有的组件都放在窗口容器中,先设置界面的布局方式,以及创建一个容器。
        SpringLayout springLayout = new SpringLayout();//使用弹簧布局管理器Container contentPane = getContentPane();      //创建一个容器contentPane.setLayout(springLayout);           //设置布局方式
  • "随机生成"按钮的放置:按钮的北部与容器的北部距离x,以及按钮的西部以容器的西部距离y,则设置如下,这种设置按钮的调整受两条边约束
JButton c1= new JButton("随机生成");//按钮定义及其布局位置设置//位置约束,c1,contentPane分别为按钮对象和容器对象
springLayout.putConstraint(SpringLayout.NORTH, c1, x, SpringLayout.SOUTH, contentPane);
springLayout.putConstraint(SpringLayout.WEST,  c1, y, SpringLayout.WEST,  contentPane);
  • "同时开始"按钮的放置:按钮的北部与文字标签的南部距离x,以及按钮的东部以容器的东部距离y(容器在按钮的东部,所以代码中需要设置距离为负数),则设置如下,这种设置,按钮的调整受两条边约束,当窗口大小改变时,按钮位置发生改变,当是其相对位置不变。
//按钮定义及其布局位置设置
JButton c1 = new JButton("同时开始");//lab为JLabel lab = new JLabel("请单击按钮生成20000个0~100000的整数.")对象
springLayout.putConstraint(SpringLayout.NORTH, c1, x, SpringLayout.SOUTH, lab);
springLayout.putConstraint(SpringLayout.EAST, c1, -y, SpringLayout.EAST, contentPane);
  • 对于中间的文本框,需要设置三个方向的约束:
//需要布局的编辑框edit,e为其北部编辑框,距离x,t为其西部文本标签,距离y,c为容器,距离z
springLayout.putConstraint(SpringLayout.NORTH, edit, x, SpringLayout.SOUTH, e);
springLayout.putConstraint(SpringLayout.WEST, edit, y, SpringLayout.EAST, t);
springLayout.putConstraint(SpringLayout.EAST, edit, -z, SpringLayout.EAST,c);

三、按钮事件绑定

SpringLayout springLayout = new SpringLayout();
Container contentPane = getContentPane();
contentPane.setLayout(springLayout);//按钮定义及其布局位置设置
JButton start= new JButton("随机生成");
contentPane.add(start);
springLayout.putConstraint(SpringLayout.NORTH, start, 10, SpringLayout.NORTH, contentPane);
springLayout.putConstraint(SpringLayout.WEST, start, 10, SpringLayout.WEST, contentPane);//为按钮绑定响应事件
start.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e) {for (int i = 0; i < 20000; i++) {Array[i] = (int) (Math.random() * 100000);}lab.setText("成功生成20000个0~100000的整数.");}
});

java-弹簧布局(自适应窗口)相关推荐

  1. 如何巧妙的运用好弹簧布局SpringLayout?

    弹簧布局SpringLayout package Test; //弹簧布局SpringLayout //就是先定位好一个组件,其他组件都可以参照已经定位好的组件来定位即可 import javax.s ...

  2. Java Swing布局管理器

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

  3. qt 图片适应窗口_Qt图片自适应窗口控件大小

    [    如果要改变窗体的大小,它内部的控件一般不随它的变化而变化,内部部件怎么随窗体的大小而改变自身的大小呢?这里我们一般可以对窗口整体进行布局,我们要用到Layout 最近在用Qt设计一个小程序, ...

  4. 59.java编程思想——创建窗口和程序片 Swing

    59.java编程思想--创建窗口和程序片 Swing 当我们的工作方法在AWT 中发生了巨大的改变后(如果可以回忆起很久以前,当Java 第 一次面世时SUN 公司曾声明Java 是一种" ...

  5. NJUPT - Java Swing布局 - 闹钟提醒

    Java Swing布局的闹钟提醒程序 宣传一波我邮 => 南京邮电大学(NJUPT) 南京邮电大学计算机学院的的同胞们应该都被迫接触过Java Swing,因为毕竟要完成学校的Java大作业, ...

  6. Java Swing布局管理器(详解版)

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

  7. 四川大学计算机学院夏欣,自适应窗口的图像平滑去噪.pdf

    自适应窗口的图像平滑去噪.pdf 2013年5月 四川大学学报(自然科学版) May.2013 ofSichuan 第50卷第3期 Journal ScienceEdition) V01.50No.3 ...

  8. 分享在winform下实现左右布局多窗口界面

    在web页面上我们可以通过frameset,iframe嵌套框架很容易实现各种导航+内容的布局界面,而在winform.WPF中实现其实也很容易,我这里就分享一个:在winform下实现左右布局多窗口 ...

  9. (2.1)HarmonyOS鸿蒙Ability创建,XML和Java页面布局UI

    鸿蒙UI中,提供了两种编写布局的方式: ①在XML中声明UI布局 ②在Ability代码中直接通过Java创建布局 这两种方式创建出的布局没有本质差别,但是XML方式较为方便简单. 在XML文件中布局 ...

最新文章

  1. 第 5 章 Spring Boot
  2. 如何利用WebScarab绕过JS验证
  3. Oracle-数据泵expdp/impdp实操
  4. 训练深度神经网络的时候需要注意的一些小技巧
  5. 20210620 Successive projection algorithm(连续投影法)
  6. [SDOI2006] 保安站岗
  7. 可持久化3--可持久化01Trie
  8. emacs .emacs_使用Emacs进行社交并跟踪您的待办事项列表
  9. 云服务器磁盘挂载_实战记录阿里云服务器不关机扩展系统盘容量/磁盘扩容
  10. linux变量循环赋值,shell脚本 循环变量赋值cf当前页面
  11. 面向对象 —— 类的分类
  12. Github上不错的Android开源代码(一)
  13. python pdf转txt_Python之pdf转txt
  14. 鸟哥linux命令行总结之——文件的压缩打包和备份
  15. 新增网站组网方案与解释说明 模版
  16. 静态时序分析 Static Timing Analysis 教程
  17. 解决java中使用getImage()导入图片失败问题
  18. uniapp ui框架——uView 及其可视化搭建工具
  19. WebSocket接收多种子协议
  20. 根据前序遍历和[中序遍历]

热门文章

  1. LeetCode 958. 二叉树的完全性检验(层序遍历)
  2. 在android添加数据采集,一种基于Android系统的地理信息数据采集方法与流程
  3. python3经典实例_Python3十大经典错误及解决办法
  4. oracle聚合函数wmsys,oracle 自定义聚合函数
  5. 【转】RNN、LSTM、Transformer、BERT简介与区别
  6. 论文阅读笔记(三)【ACL 2021】Locate and Label: A Two-stage Identifier for Nested Named Entity
  7. ICML2021 | Self-Tuning: 如何减少对标记数据的需求?
  8. 我拿模型当朋友,模型却想泄漏我的隐私?
  9. 掌握神经网络,我应该学习哪些至关重要的知识点?
  10. 高性能平台设计—美团旅行结算平台实践