Absolute Layout
----------------siwuxie095
根面板 contentPane 的默认布局为 Border Layout,将其
切换为 Absolute Layout
Absolute Layout 即 绝对布局,即 它没有任何的限制,可以
在界面中任意摆放控件的位置
在将控件拖动到面板上时,会出现参考线,参考线仅仅是
为了在界面中摆放元素时给出参考,而不具有任何实质性
的吸附功能
「如果不使用参考线,可以自由的将控件移动到任何位置」
当在面板中摆放好某控件,该控件的坐标和大小都是固定的,
不会随窗体的缩放而产生任何变化
在绝对布局的情况下,可以在代码中任意修改元素的坐标和大小
向 contentPane 中添加一个 JLabel,将其文本(text)改为:
This is a label,Rename 为:label
在 Source 中修改代码:
效果如下:
向 contentPane 中添加一个 JButton,将其文本(text)改为:
Run,Rename 为:btnRun
在绝对布局中,虽然不会有布局管理器帮助摆放,但是可以提供
最佳的灵活性
如:可以编写一个线程来为当前的控件提供动画(放大缩小、位置移动)
为 JButton 添加鼠标点击事件,当点击 Run 时,JLabel 上下浮动
JButton btnRun = new JButton("Run"); btnRun.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { //创建一个 SwingWoker 线程,指定泛型为 String 和 Integer //要覆盖 doInBackground() 和 process() 方法 //创建完成后,需要调用 execute() 方法,将它运行 new SwingWorker<String, Integer>() { //获取 Y 的原坐标,需要将 label 的声明转移到类中 int originalY=label.getY(); @Override protected String doInBackground() throws Exception { while (true) { //每隔 50 毫秒执行一次 Thread.sleep(50); 年到当前时间的毫秒值 //先从整型转换成浮点型,又从浮点型转换成整型 // 100 表示运动的快慢(越小速度越快,反比), // 20 表示运动的幅度(越小幅度越小,正比) //将值 publish() 到 process() 中 publish((int)(Math.sin(System.currentTimeMillis()/100)*20)); } } @Override protected void process(List<Integer> chunks) { //从 chunks 中把值取出来 for (int dynamicY : chunks) { //X 坐标不变,Y 坐标变化,为标签做了一个正弦的动画 label.setLocation(label.getX(), originalY+dynamicY); } } }.execute(); } }); |
效果如下:
在绝对布局中,当控件出现重叠时,层级高的控件会挡住
层级低的控件,并接收鼠标事件
【made by siwuxie095】
Absolute Layout的更多相关文章
- Java swing 如何将一个按钮放置到弹出框框的任意位置?(Absolute layout 布局的使用)
准备: Absolute layout 绝对布局,绝对布局中控件的可以在任意位置放置 如何制作下面那种样子的 弹出框? ---------------------------------------- ...
- ExtJS 布局-Absolute布局(Absolute layout)
更新记录: 2022年5月31日 发布本篇 1.说明 使用xy配置项设置子组件在父容器中绝对位置,本质是将子组件的CSS的position设置为absolute,然后使用x和y配置项映射到CSS的to ...
- ExtJs常用布局--layout详解(含实例)
序言: 笔者用的ExtJs版本:ext-3.2.0 ExtJs常见的布局方式有:border.form.absolute.column.accordion.table.fit.card.anchor ...
- dynamic-css 动态 CSS 库,使得你可以借助 MVVM 模式动态生成和更新 css,从 js 事件和 css 选择器的苦海中脱离出来
dynamic-css 使得你可以借助 MVVM 模式动态生成和更新 css,从而将本插件到来之前,打散.嵌套在 js 中的修改样式的代码剥离出来.比如你要做元素跟随鼠标移动,或者根据滚动条位置的变化 ...
- Android面试题(一)
1. 请描述一下Activity 生命周期. 答: 如下图所示.共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onP ...
- Xamarin.Forms 简介
An Introduction to Xamarin.Forms 来源:http://developer.xamarin.com/guides/cross-platform/xamarin-forms ...
- android面试题
1. 请描述一下Activity 生命周期. 答: 如下图所示.共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onP ...
- Android基础面试题
1. 请描述一下Activity 生命周期. 答: 如下图所示.共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onP ...
- cocos布局分析
HBox和VBox布局 HBox只是一个水平布局包装类. HBox里面所有的孩子节点都会水平排列成一行 VBox仅仅是对垂直布局的一个简便的类封装. VBox把它的子节点布局在一竖列中. Layout ...
随机推荐
- 解决mysql登录报错:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
今天在安装一个压缩包mysql-5.7.19时,碰到了一系列问题,现将这些问题罗列出来: 一. ERROR 2003 (HY000): Can't connect to MySQL server o ...
- doeNET Framework 农历 ChineseLunisolarCalendar
C:\Program Files (x86)\MSBuild\14.0\Bin\csc.exe test.cs # test.cs using System; using System.Diagnos ...
- hzau 1208 Color Circle(dfs)
1208: Color Circle Time Limit: 1 Sec Memory Limit: 1280 MBSubmit: 289 Solved: 85[Submit][Status][W ...
- wiredtiger引擎性能——比levelDB更牛叉!
WE'VE JOINED MONGODB! We're proud to announce that MongoDB has acquired WiredTiger, and we've join ...
- Git_学习_01_ git 安装与配置
参考:windows下Git BASH安装 二.参考资料 1. windows下Git BASH安装
- commons-dbcp连接池的使用
数据库连接池 池参数(所有池参数都有默认值): 初始大小: 最小空闲连接数: 增量:一次创建的最小单位(5个) 最大空闲连接数:12个 最大连接数:20个 最大的等待时间:1000毫秒 四大连接参数: ...
- KVM- 存储池配置
1.创建基于文件夹的存储池(目录) [root@kvm_1 ~]# mkdir -p /data/vmfs 2.定义存储池与其目录 [root@kvm_1 ~]# virsh pool-define- ...
- 自编jQuery插件实现模拟alert和confirm
现在绝大多数网站都不用自带的alert和confirm了,因为界面太生硬了.因此这个插件就这样产生了自己定制一个的想法...... 啥也不说,先上图,有图有真相 :) 现在绝大多数网站都不用自带的al ...
- 【转】深入剖析Java中的装箱和拆箱
深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱 ...
- 【全面解禁!真正的Expression Blend实战开发技巧】第六章 认识ListBox
反反复复考虑后,准备把这一章的切入点瞄准ListBox.并用了一个看起来有点别扭的标题“认识ListBox",许多人看到这里就不爱看了,即使是大学里用winform的学生也会说ListBox ...