Absolute Layout

----------------siwuxie095

根面板 contentPane 的默认布局为 BorderLayout,将其

切换为 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);

//System.currentTimeMillis() 即 1970年到当前时间的毫秒值

//先从整型转换成浮点型,又从浮点型转换成整型

// 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】

时间: 2024-12-17 05:24:26

Absolute Layout的相关文章

Java swing 如何将一个按钮放置到弹出框框的任意位置?(Absolute layout 布局的使用)

准备: Absolute layout 绝对布局,绝对布局中控件的可以在任意位置放置 如何制作下面那种样子的 弹出框? -------------------------------------------- 新创建一个弹出框,然后选中getContentPane(),接着再将虾米的Layout 属性设置为 Absolute layout. 接着再从左边的中拖JButton到右边的弹出框中,你会发现JButton可以放置到你想的任意位置. 作业: 1.制作一个下面那种弹出框 左上角和右下角分别是

ExtJs常用布局--layout详解(含实例)

序言: 笔者用的ExtJs版本:ext-3.2.0 ExtJs常见的布局方式有:border.form.absolute.column.accordion.table.fit.card.anchor 另外,不常见的布局有:tab.vbox.hbox 本文所有实例代码已提供下载,下载链接:ExtJs常用布局--layout详解实例代码 简介: 最常用的边框布局--BorderLayout 最简单的布局--FitLayout 制作伸缩菜单的布局--Accordion 实现操作向导的布局--CardL

Extjs 关于layout几种类型的小结

1.absolute 在容器中定位显示 Ext.create('Ext.form.Panel', { title: 'Absolute Layout', width: 300, height: 275, layout: { type: 'absolute' // layout-specific configs go here //itemCls: 'x-abs-layout-item', }, url:'save-form.php', defaultType: 'textfield', item

常见Android面试题及答案(详细整理)

常见Android面试题及答案(详细整理) 1. 请描述一下Activity 生命周期. 答: 如下图所示.共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy(). onCreate(): 创建Activity时调用,设置在该方法中,还以Bundle的形式提供对以前存储的任何状态的访问. onStart(): Activity变为在屏幕上对用户可见时调用. o

Java的Swing插件的使用

为了完成java实验5,我下载了Java的Swing插件,下载安装的过程就不再赘述,这有一个教程点这里 经过摸索,我学会了插件的基本使用 1. 在Eclipse中创建一个Java Project,建立一个包,如图所示 2.如图所示,点击other选项 3.如图选择Application Window,再点next 4.进入这个页面,Source folder选择之前建好的工程的src文件夹,Package选择工程中的包,Name自己定义,点finish 5.这时在包中就会有一个叫做NewWind

Android面试题(一)

1. 请描述一下Activity 生命周期. 答: 如下图所示.共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy(). onCreate(): 创建Activity时调用,设置在该方法中,还以Bundle的形式提供对以前存储的任何状态的访问. onStart(): Activity变为在屏幕上对用户可见时调用. onResume(): Activity开始与

cocos布局分析

HBox和VBox布局 HBox只是一个水平布局包装类. HBox里面所有的孩子节点都会水平排列成一行 VBox仅仅是对垂直布局的一个简便的类封装. VBox把它的子节点布局在一竖列中. Layout容器下布局 ccui.LayoutType ={ABSOLUTE = 0, --绝对布局 默认 子元素按照绝对位置排列VERTICAL = 1, --垂直平铺HORIZONTAL = 2, --横向平铺RELATIVE = 3, --相对布局} ccui.LinearGravity ={ none

Android开发-基本概念小整理(二)为了面试的小伙伴们所准备~~

转载请注明出处:http://blog.csdn.net/iwanghang/ 我正在参加CSDN 2016博客之星评选,希望得到您的宝贵一票~http://blog.csdn.net/vote/candidate.html?username=iwanghang请为我投票,谢谢 ~~如果没有CSDN账号 直接使用微信/QQ/微博登陆 就能投票了~~ 31. 请描述一下BroadcastReceiver. BroadcastReceiver用于接收并处理广播通知(broadcast announc

js面试题-----页面布局

题目1:假设高度已知,请写出三栏布局,其中左栏.右栏宽度各为300px,中间自适应 答案: ①.浮动方式 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style media='screen'> *{ padding:0; margin:0; } .lay