您现在的位置是:网站首页 > 代码编程 > JAVA开发JAVA开发
【原】SwingQQ窗体抖动效果
不忘初心 2017-12-19 围观() 评论() 点赞() 【JAVA开发】
简介:之前讲过了好友列表的闪烁,消息来临的时候,能第一时间知道,但是有时候消息太多了,实在没看到,QQ还提供了一个必杀技——窗体抖动,这个功能也非常的好用,给好友发送抖动窗口了之后,直接强制将聊天窗口弹出来,并且在屏幕上抖一抖,这样总该能看到消息了。今天来教大家如何让swing窗体也抖动起来,实现原理非常的简单,上一篇文章中讲过好友头像的闪烁,就是动态改变窗体的坐标,还需要加入一个循环,让抖动的效果持续
之前讲过了好友列表的闪烁,消息来临的时候,能第一时间知道,但是有时候消息太多了,实在没看到,QQ还提供了一个必杀技——窗体抖动,这个功能也非常的好用,给好友发送抖动窗口了之后,直接强制将聊天窗口弹出来,并且在屏幕上抖一抖,这样总该能看到消息了。
今天来教大家如何让swing窗体也抖动起来,实现原理非常的简单,上一篇文章中讲过好友头像的闪烁,就是动态改变窗体的坐标,还需要加入一个循环,让抖动的效果持续一会儿。
好了,没多少要说的,直接给代码了:
package com.wolffy.frame;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* Created by SongFei on 2017/12/19.
*/
public class ShakeFrame extends JFrame {
private JPanel jPanel;
private JButton jButton;
private long shakeTime;
public ShakeFrame() {
initGUI();
}
private void initGUI() {
setSize(700, 400);
//setUndecorated(true);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
jPanel = new JPanel();
getContentPane().add(jPanel, BorderLayout.CENTER);
jButton = new JButton("抖动");
jPanel.add(jButton);
jButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
shake();
}
});
}
/**
* 抖动窗体,原理就是动态改变窗体坐标,跟好友头像闪动一样
*/
private void shake() {
try {
// 校验操作是否过于频繁,5秒内不能再次抖动
long currentTime = System.currentTimeMillis();
if (currentTime - shakeTime <= 5000) {
System.err.println("抖动过于频繁");
return;
}
// 抖动成功之后,需要记录时间,下次做判断
shakeTime = currentTime;
// 窗体在屏幕上所在的初始坐标
int x = this.getX();
int y = this.getY();
// 抖动多少次,不宜太多,也不宜太少
for (int i = 0; i < 20; i++) {
// System.out.println(i & 1);
// i & 1,这个作用是奇偶分开
if ((i & 1) == 0) {
x += 3;
y += 3;
} else {
x -= 3;
y -= 3;
}
// 改变窗体的坐标
this.setLocation(x, y);
// 睡一会儿,造成停顿的效果
Thread.sleep(50);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ShakeFrame shakeFrame = new ShakeFrame();
shakeFrame.setVisible(true);
//loginFrame.pack();
shakeFrame.setLocationRelativeTo(null);
}
}
抖动是坐标来回切换,循环中的判断条件打印出来,值如下图所示,类似于奇数和偶数分开,i % 2 == 0,也是可以实现的,大家想用哪种都行
QQ抖动时点快了会给出提示,这里也模拟了一下,很简单,就是记录一下时间,然后下次点击的时候来比对这个时间,看看是否过于短暂
基本上就这些了,大家直接copy代码来运行看效果吧!
看完文章,有任何疑问,请加入群聊一起交流!!!
很赞哦! ()
相关文章
标签云
猜你喜欢
- IntelliJ IDEA 2019.2已经可以利用补丁永久破解激活了
- IntelliJ IDEA 2019.3利用补丁永久破解激活教程
- IntelliJ IDEA高版本最灵活的永久破解激活方法(含插件激活,时长你说了算)
- Jetbrains全家桶基于ja-netfilter的最新破解激活详细图文教程
- IntelliJ IDEA 2022.1永久破解激活教程(亲测可用,持续更新)
- 分享几个正版 IntelliJ IDEA 激活码(破解码、注册码),亲测可用,持续更新
- ja-netfilter到底需不需要mymap,2021.3.2版本激活失效?
- 如何激活idea2022.1及以上版本中的插件(亲测可用)
- 【史上最全】IntelliJ IDEA最新2022.1版本安装和激活视频教学(含插件)
- IntelliJ IDEA 2022.2 版本最新2099年永久激活方法,亲测可用,也可以开启新UI了。
站点信息
- 网站程序:spring + freemarker
- 主题模板:《今夕何夕》
- 文章统计:篇文章
- 标签管理:标签云
- 微信公众号:扫描二维码,关注我们