效果图:

使用的是Java AWTUtilities API 建议使用JDK1.8 开发工具 IDEA所有代码如下

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import com.sun.awt.AWTUtilities;
import javax.imageio.ImageIO;
import javax.swing.JDialog;
import javax.swing.JPanel;public class Snow extends JDialog{private static final long serialVersionUID = -6073107021198223228L;//  获取屏幕分辨率public final static int Width = (int) java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;public final static int Height = (int) java.awt.Toolkit.getDefaultToolkit().getScreenSize().height;public static void main(String[] args) {new Snow().setVisible(true);}public Snow(){this.setLocation(0,0);//位置this.setSize(Width, Height);//大小,大小为屏幕分辨率this.setUndecorated(true);//隐藏最大化最小化那一栏,一时想不起叫什么了this.setAlwaysOnTop(true);//窗口始终在最顶上this.setDefaultCloseOperation(0);//防止按Alt+F4关闭hua hua=new hua();this.add(hua);AWTUtilities.setWindowOpaque(this, false);//实现透明窗口建议使用jre1.7版本}
}class hua extends JPanel implements Runnable{//画布private static final long serialVersionUID = -2986761287590314088L;public static ArrayList<xue>list=new ArrayList<xue>();private BufferedImage img;public hua(){try {img=ImageIO.read(new File("snow.png"));//加载雪花图片} catch (IOException e) {e.printStackTrace();}this.setOpaque(false);//设为透明的new Thread(this).start();//启动线程}@Overridepublic void paint(Graphics g) {// TODO 自动生成的方法存根super.paint(g);for(int i=0;i<list.size();i++){xue x=list.get(i);g.drawImage(img, (int)x.x, (int)x.y, x.w, x.h, null);}}@Overridepublic void run() {// TODO 自动生成的方法存根int fps=150;//每秒帧数int time=1000/fps;int ii=0;while(true){long a=System.currentTimeMillis();if(ii>3){new xue();ii=0;}ii++;for(int i=0;i<list.size();i++){//调用所有雪花的run方法list.get(i).run();}repaint();//画雪long b=System.currentTimeMillis();long c=b-a;if(time-c>0)try {Thread.sleep(time-c);} catch (InterruptedException e) {e.printStackTrace();}}}}class xue{//雪0public int w,h;public float x,y,sdx,sdy;public xue(){w=h=(int)(Math.random()*20+10);//随机大小sdx=(float) (Math.random()*0.7+0.3);//x轴移动速度sdy=(float) (Math.random()*0.4+0.3);//y轴移动速度//雪花出现的位置只能在屏幕的上右方double gailv=(double)(Snow.Width+ Snow.Height)/ Snow.Width-1;if(Math.random()<gailv){//雪花在屏幕上方y=-h;x=(int)(Math.random()* Snow.Width);}else{//雪花在屏幕右方x= Snow.Width;y=(int)(Math.random()* Snow.Height);}hua.list.add(this);//添加进集合}public void run(){//雪花的移动//如果雪花超出屏幕范围的话就从集合中删掉if(x+w<0||y> Snow.Height||x+w<0||y> Snow.Height){hua.list.remove(this);}y+=sdy;x-=sdx;}
}

源码+素材下载: 点我下载

JavaSE实现桌面屏幕下雪功能相关推荐

  1. w ndows7怎么设置桌面保护,Windows7屏幕保护功能失效了怎么办?

    屏幕保护程序既能节省电量又能保护我们的显示器,一般买了电脑后,都会进行设置,如果打开电脑后临时有事,中断对电脑的操作后,就会自动进入屏幕保护程序,将刚才工作的状态隐藏起来,非常好用,但是有用户反映说, ...

  2. js实现桌面录屏功能

    纯js实现桌面录屏功能 案例背景 最近在web项目开发过程中,遇到需要录制界面操作视频的需求.在一般情况下,我们一般通过视频录制软件完成桌面录屏功能.然而无意间发现W3C早已提供了API,web也可以 ...

  3. Windows远程桌面实现之五(FFMPEG实现桌面屏幕RTSP,RTMP推流及本地保存)

    by fanxiushu 2018-07-10 转载或引用请注明原始作者. 前面文章分别阐述了,如何抓取电脑屏幕数据,如何采集电脑声音, 如何实现在现代浏览器中通过HTML5和WebSocket直接进 ...

  4. win7 锁定计算机 失效,win7系统屏幕保护功能失效无法进入屏幕保护状态怎么办...

    win7系统自带屏幕保护功能,屏幕保护程序既能节省电量又能保护我们的显示器.如果打开电脑后临时有事,离开电脑后就会自动进入屏幕保护程序,将刚才工作的状态隐藏起来,非常好用.但是有用户反映说win7电脑 ...

  5. 计算机桌面屏幕设置,双显示器设置:如何设置一台电脑两个显示器

    双显示器设置,如何设置一台电脑两个显示器:一般来说一台电脑通常只配一个显示器,在我们平时的的工作.娱乐基本上都是这样的搭配.但是这种用法,当您打开多个窗口的时候,一个显示器空间就显得很晓,尤其是做一些 ...

  6. Windows远程桌面实现之十一:桌面屏幕通过各种直播服务端直播(RTSP, RTMP, HTTP-FLV, HLS)

    by fanxiushu 2020-01-23 转载或引用请注明原始作者. 此文还是基于xdisp_virt远程项目中的一个子功能.在把xdisp_virt移植到各种平台之后,就想着再做点什么新功能, ...

  7. php通知前端,HTML5桌面通知提示功能的实现

    HTML5赋予网页更好的意义和结构.更加丰富的标签将随着对RDFa的,微数据与微格式等方面的支持,构建对程序.对用户都更有价值的数据驱动的Web.本文我们就和大家分享HTML5实现桌面通知提示功能. ...

  8. 安卓html5桌面提醒,HTML5桌面通知提示功能的实现

    HTML5赋予网页更好的意义和结构.更加丰富的标签将随着对RDFa的,微数据与微格式等方面的支持,构建对程序.对用户都更有价值的数据驱动的Web.本文我们就和大家分享HTML5实现桌面通知提示功能. ...

  9. python 屏幕录制_Python实现屏幕录制功能的代码

    前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的python来实现呢?经过一晚上的尝试发现 ...

最新文章

  1. 红旗桌面版本最新应用方式和成绩解答100例-5
  2. acs880变频器选型手册_据说这是变频器知识里讲的最全的了,小编拿来分享给大家!...
  3. oracle异常如何处理,ORACLE异常处理总结
  4. python3.6+qt designer一系列配置
  5. python Tricks —— list 镜像复制、list of lists 的 flat
  6. java线程池一创建就立马有线程了么_Java 线程池二之Executors创建的五种线程池及使用注意...
  7. linux平台上不同类型的压缩文件的压缩与解压
  8. 更新个祥硕ASM1153E开卡转接板的固件,详细教程
  9. JS怎么获取当月最后一天
  10. emlog模板 Meta主题带后台开源版 资源娱乐网模板
  11. python要什么电脑配置_学Python需要什么配置的电脑?
  12. mbr+ghost装黑苹果OS X 10.13
  13. 【JAVA】Java8对时间的一些常用操作记录。例如:LocalDateTime、ZoneId等。
  14. 算法学习之道,应有三重境界
  15. ldap打通confluence
  16. 「镁客早报」库克抨击高通,表明不可能在法律纠纷中达成和解;传闻无人驾驶公司Aurora融资20亿美元... 1
  17. 线材基础知识02——AWG线规
  18. 关于直播APP会引用到的so文件
  19. ## 5G远程培训系统-概述
  20. 颠覆大数据分析之Spark弹性分布式数据集

热门文章

  1. 仿微信的网络聊天室项目开发【完整源码讲解】
  2. JZOJ 幽幽子与森林
  3. Android-Hybrid-问题收集Android客户端无法拦截Vue路由的问题
  4. Linux ssh无密登陆
  5. 羡慕华为人年薪110万?先看看华为员工的16项标准!
  6. 未来计算机长啥样,未来人类到底会长成啥样?科学家公布最终模拟图!
  7. WAP(wml)开发教程10--WAP网站服务器配置
  8. 接入科大讯飞语音听写,增加语音动画,类似京东语音搜索功能
  9. 从网卡中截获sql server的sql语句
  10. windows批量改名