效果如下:

 步骤:

一.在项目中创建一个继承JFrame类的MainFrame窗体类。一个继承Jlable类,并实现Runnable接口的自定义标签类SnowFlakeLable及一个背景面板类BackgroundPanel。

二.在标签类SnowFlakeLable中实现Runable接口的run()方法中,每隔一小段时间就对自定义标签在父级容器中的位置进行改变,从而实现雪花飘落的效果。

三.在MainFrame窗体类中,为背景面板类BackgroundPanel的实例添加鼠标移动事件,用于向背景面板中添加自定义雪花标签对象。

代码如下:

BackgroundPanel类

import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;
/*** 背景面板*/
public class BackgroundPanel extends JPanel {private static final long serialVersionUID = 5260642571525243284L;private Image image;// 背景图像public BackgroundPanel() {setOpaque(false);// 透明setLayout(null);// 绝对布局}public void setImage(Image image) {this.image = image;// 设置图像}protected void paintComponent(Graphics g) {if (image != null) {g.drawImage(image, 0, 0, this);// 绘制图像}super.paintComponent(g);// 调用超类的方法}
}

MainFrame类

import java.awt.*;import java.awt.event.*;
import javax.swing.*;
import java.awt.Cursor;public class MainFrame extends JFrame {private static final long serialVersionUID = 1L;private BackgroundPanel backgroundPanel = null;public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {MainFrame thisClass = new MainFrame();thisClass.setVisible(true);}});}public MainFrame() {super();setTitle("雪花飘落动画");setSize(628, 441);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Image image = new ImageIcon(getClass().getResource("/image/cursor.png")).getImage();// 创建图像对象Cursor cursor = getToolkit().createCustomCursor(image, new Point(),"魔棒");// 创建鼠标光标对象setCursor(cursor);// 指定鼠标光标setResizable(false);// 不允许改变窗体大小backgroundPanel = new BackgroundPanel();// 创建背景面板// 为背景面板指定图像backgroundPanel.setImage(new ImageIcon(getClass().getResource("/image/bg.jpg")).getImage());backgroundPanel.addMouseMotionListener(new MouseAdapter() {public void mouseMoved(MouseEvent e) {// 鼠标移动事件SnowFlakeLabel snow = new SnowFlakeLabel();// 创建雪花飘落标签Point point = e.getPoint();// 获得鼠标位置snow.setLocation(point);// 指定雪花在背景面板上的位置backgroundPanel.add(snow);// 将雪花添加到背景面板上}});getContentPane().setLayout(new BorderLayout());// 指定窗体内容面板为边界布局getContentPane().add(backgroundPanel, BorderLayout.CENTER);// 在窗体内容面板上添加背景面板}
}

SnowFlakeLabel类


import java.awt.*;import javax.swing.*;
/*** @author: 张阳阳*/
public class SnowFlakeLabel extends JLabel implements Runnable {private final static ImageIcon snow = new ImageIcon(SnowFlakeLabel.class.getResource("/image/snowflake.png"));//获取源文件private int width = snow.getIconWidth();// 宽度private int height = snow.getIconHeight();// 高度/*** 构造方法*/public SnowFlakeLabel() {setSize(new Dimension(width, height));// 初始化大小setIcon(snow);// 指定图标new Thread(this).start();// 创建并启动线程}public void run() {Container parent = getParent();// 获取父容器对象Point myPoint = getLocation();// 获取初始位置while (true) {// 循环读取父容器对象if (parent == null) {try {Thread.sleep(50);// 线程休眠} catch (InterruptedException e) {e.printStackTrace();}myPoint = getLocation();// 获取初始位置parent = getParent();// 获取父容器对象} else {// 如果已经获取到父容器break;// 跳出循环}}int sx = myPoint.x;// X坐标int sy = myPoint.y;// Y坐标int stime = (int) (Math.random() * 30 + 10);// 随机移动速度int parentHeight = parent.getHeight();// 容器高度while (parent.isVisible() && sy < parentHeight - height) {setLocation(sx, sy);// 指定位置try {Thread.sleep(stime);// 线程休眠} catch (InterruptedException e) {e.printStackTrace();}sy += 2;// 垂直偏移2个像素}}
}

 image下的图片:

JAVA实现雪花飘落动画效果相关推荐

  1. Android 雪花飘落动画效果 自定义View

    在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天.每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不 ...

  2. java之雪花飘落效果的实现(撩妹小程序)

    第一章:程序的思路分析 1.思路分析 程序采用面向对象的思想,包含主程序,面板类和雪花类. 主程序用来生成窗口,存放面板等作用. 面板类用来存放背景图片,存放生成的雪花对象,定时去刷新雪花的位置,形成 ...

  3. php实现页面雪花效果,JavaScript_使用javascript实现雪花飘落的效果,看了javascript网页特效实例大全 - phpStudy...

    使用javascript实现雪花飘落的效果 看了javascript网页特效实例大全中的图片飘下的效果实例,觉得值得动手学习下. 就把图片改成雪花图,完成一个雪花飘下的效果. 并且,其中有些内容比较陈 ...

  4. three.js 几何体-组合网格_ThreeJS 粒子系统实现雪花飘落动画

    ThreeJS 粒子系统中,THREE.Points是用来创建点的类,也用来批量管理粒子,基于几何体的顶点来渲染每个粒子.这个类的构造函数有两个参数,geometry(几何体)和material(材质 ...

  5. Flutter 雪花飘落的效果-深夜创作

    在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天.每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不 ...

  6. HTML5 canvas绘制雪花飘落动画(需求分析、知识点、程序编写分布详解)

    HTML5 canvas绘制雪花飘落动画(需求分析.知识点.程序编写分布详解) 原文:HTML5 canvas绘制雪花飘落动画(需求分析.知识点.程序编写分布详解) 看到网上很多展示html5雪花飞动 ...

  7. php实现页面雪花效果,CSS3如何实现雪花飘落的效果

    通过CSS3中的animation属性来设置动画名称,动画时间.速度以及动画是否循环播放来实现雪花飘落的效果 今天将要分享的是利用CSS3中的animation属性来实现雪花飘落的效果,具有一定的参考 ...

  8. android雪花飘落动画,用Jetpack Compose制作出可爱的天气动画

    1. 背景介绍 最近参加了Compose挑战赛的终极挑战,使用Compose完成了一个天气app.之前几轮挑战我也都有参与,每次都学到不少新东西,希望在这最后一轮挑战中,活用这段时间的积累做出更加成熟 ...

  9. java easing_[Java教程]jQuery Easing 动画效果扩展

    [Java教程]jQuery Easing 动画效果扩展 0 2015-11-20 11:00:03 官网:http://gsgd.co.uk/sandbox/jquery/easing/ jQuer ...

最新文章

  1. OpenFeign 全方位讲解
  2. CSS教你玩转背景background-position(1)
  3. 2013年计算机专业对口模拟试题二,计算机对口升学模拟试题全解.doc
  4. python编写一个压测重启的测试程序
  5. WEB前端:浏览器(IE+Chrome+Firefox)常见兼容问题处理【03】
  6. 06.动态SQL和foreach
  7. 携号转网,用户最关心的还是网络质量
  8. 保卫Google!刻不容缓
  9. 如何调用Android隐藏API
  10. VMware vSphere Client虚拟化重装虚拟机系统步骤
  11. js字符串转json, json转字符串
  12. spring之AOP
  13. unity 射线检测真机失效_Unity 2019 射线检测失效
  14. Windows + Linux 双系统的安装
  15. QT修改releas发布的exe图标
  16. 跳出横向的、孤立的牵绊,真正站在新的角度来看待Web3.0
  17. Mac外接键盘ikbc win键无法使用问题
  18. 【企业】乔吉拉德之 250 定律
  19. 广州市车联网先导区LTE-V2X 车载直连通讯设备技术规范
  20. win7已经阻止此发行者在您的计算机上运行软件,Win7系统提示Windows已经阻止此软件因为无法验证发行者解决方法...

热门文章

  1. 分享基于JavaEE移动平台的企业级房地产ERP采购系统全程开发实录
  2. 如果在做项目时,发现自己在规定的时间内肯定完成不了时,你会怎么办
  3. vivo计算机隐藏游戏,vivoX30功能使用教程 隐藏游戏图标不让孩子发现
  4. Contract Verify and Publish
  5. python R 实现数字变古诗
  6. 【预测模型】统计的基本概念
  7. [第四届-强网杯]:upload
  8. 行人重识别(reid)近期最优最简模型的训练测试
  9. 算法总结-字典树(正在更新)
  10. Express获取请求参数