一、首先建立包ball,然后创建模板类BallModel

BallModel类代码如下 :

package ball;import java.awt.Color;
import java.awt.Graphics;public class BallModel {int x,y,d,speed; //定义小球的x,y坐标,小球直径和速度Color c; //构造方法public BallModel() {x=(int)(Math.random()*1920); //随机生成x坐标y=(int)(Math.random()*1080);  //随机生成y坐标d=(int)(Math.random()*50)+10; //小球直径speed=12-d/6; //球直径越小速度越快c=new Color((int)(Math.random()*256), (int)(Math.random()*256), (int)(Math.random()*256));  //随机生成小球颜色}//画出小球public void drawBall(Graphics g){g.setColor(c); g.fillOval(x, y, d, d);}}

二、新建BallPanel类,创建对象和移动小球

BallPanel类代码如下 :

package ball;import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JPanel;public class BallPanel extends JPanel implements MouseMotionListener{/*** */private static final long serialVersionUID = 5088665161758943179L;int[] dir=new int[200];  //小球路径数组    BallModel[] ba=new BallModel[200];  //小球对象数组public BallPanel (){for (int i = 0; i < ba.length; i++) {ba[i]=new BallModel();  //创建小球对象dir[i]=(int)(Math.random()*4+1);  //生成小球路径}}//画出小球@Overridepublic void paint(Graphics g) {super.paint(g);setOpaque(false);for (int i = 0; i < ba.length; i++) {ba[i].drawBall(g);  //调用模板中画小球的方法}}//小球的移动轨迹控制public void moveBall(){new Thread(){public void run() {  //重写run方法super.run();while(true){for (int i=0;i<ba.length;i++){  //循环所有小球//判断路径,增加值使小球前进switch (dir[i]) {case 1:{ba[i].x+=ba[i].speed;ba[i].y+=ba[i].speed;break;}case 2:{ba[i].x-=ba[i].speed;ba[i].y+=ba[i].speed;break;}case 3:{ba[i].x-=ba[i].speed;ba[i].y-=ba[i].speed;break;}case 4:{ba[i].x+=ba[i].speed;ba[i].y-=ba[i].speed;break;}default:break;}//判断边界值,改变小球路径if(ba[i].x>1920 - ba[i].d){if(dir[i]==1){dir[i]=2;}if(dir[i]==4){dir[i]=3;}ba[i].c=new Color((int)(Math.random()*256), (int)(Math.random()*256), (int)(Math.random()*256));}if(ba[i].x<0){if(dir[i]==2){dir[i]=1;}if(dir[i]==3){dir[i]=4;}ba[i].c=new Color((int)(Math.random()*256), (int)(Math.random()*256), (int)(Math.random()*256));}if(ba[i].y>1080 - ba[i].d){if(dir[i]==1){dir[i]=4;}if(dir[i]==2){dir[i]=3;}ba[i].c=new Color((int)(Math.random()*256), (int)(Math.random()*256), (int)(Math.random()*256));}if(ba[i].y<0){if(dir[i]==4){dir[i]=1;}if(dir[i]==3){dir[i]=2;}ba[i].c=new Color((int)(Math.random()*256), (int)(Math.random()*256), (int)(Math.random()*256));}                        }repaint(); //重画try {Thread.sleep(20); //休眠20毫秒} catch (InterruptedException e) {e.printStackTrace();}}};}.start();}@Overridepublic void mouseDragged(MouseEvent e) {System.exit(0); //退出}@Overridepublic void mouseMoved(MouseEvent e) {}}

三、新建BallFrame类,创建屏保窗口,添加组件

BallFrame类代码如下

package ball;import javax.swing.JFrame;
import com.sun.awt.AWTUtilities;public class BallFrame {public static void main(String[] args) throws InterruptedException {JFrame j=new JFrame();BallPanel b=new BallPanel();j.add(b);j.setSize(1920, 1080);j.setUndecorated(true);  //去边框j.setLocationRelativeTo(null);  //居中j.setDefaultCloseOperation(3);  //默认关闭AWTUtilities.setWindowOpaque(j, false);  //设置透明j.setVisible(true);  //设为可见b.moveBall();  //调用小球移动方法j.addMouseMotionListener(b); //注册监听器}}

OK,一个简单的屏保程序就完成了。

Java彩球屏保的制作相关推荐

  1. 简单的WIN32屏保开发制作(可播放视频)

    本文不同于VC下使用ScrnSave.lib进行屏保制作的方式, 而是在VS下以其内在原理,从无到有进行一个简单的WIN32屏保开发, 只要你拥有一些简单的WIN32程序编写的经验,便可以很轻松的明白 ...

  2. WPF 制作 Windows 屏保

    分享如何使用WPF 制作 Windows 屏保 WPF 制作 Windows 屏保 作者:驚鏵 原文链接:https://github.com/yanjinhuagood/ScreenSaver 框架 ...

  3. windows server 2016域控屏保策略设置

    1.使用Photo Screensaver Maker工具制作scr格式的屏保 2.制作完成的scr格式屏保文件,将文件放入服务器 3.新建策略在用户配置-策略-管理模板-控制面板-个性化依次启用红色 ...

  4. Android动画屏保,Android Daydream 互动屏保

    Android Daydream 互动屏保 API19 API23 Create:2016-03-01 继承DreamService来实现一个自定义屏保 Dreams是当充电的设备空闲,或者插入底座时 ...

  5. 学以致用——Java源码——使用随机几何图形制作屏保程序(Screen Saver with Shapes Using the Java 2D API)

    程序功能: 使用随机输出的几何图形作为屏保程序,用户可随时指定屏幕上要显示的图形元素的数量. 运行示例: 源码: 1. 实体类 import java.awt.Graphics; import jav ...

  6. 罗盘时钟制作代码_抖音八卦时钟手机屏保设置方法!

    声明:部分内容来源网络 抖音时钟数字罗盘屏保最近十分的火爆, 看上去很有意思也很有趣, 很多人都想要弄. 而抖音时钟数字罗盘屏保如何设置? 今天小编就教大家如何30秒内搞定 其实这个非常的简单, 只要 ...

  7. flash设置屏保 html,用Flash制作屏保-FlashWiz

    当朋友们在网上漫步时,看到那些丰富多采的Flash(动画)时,会不会眼馋?会不会心动?会不会想把它们作为屏幕保护程序来一饱眼福呢?在这里介绍一个把Flash制作成屏幕保护的程序-FlashWiz.Fl ...

  8. Windows窗体应用c#制作屏保

    一.Windows 窗体应用程序 Windows窗体应用程序:是在用户计算机上运行的客户端应用程序,可显示信息.请求用户输入以及通过网络与远程计算机进行通信. 二.常用的控件 控件名称一般为表示控件类 ...

  9. tkinter tkinter 制作屏保制作屏保

    今天看到的,随手转一下 import random import tkinterclass RandomBall():'''定义球的类'''def __init__(self, canvas, scr ...

最新文章

  1. MODE ——计算了 任意多个数字的平均值(知识点:for的循环)
  2. QT学习:代理(Delegate)练习
  3. WebSphere Application Server 5.0在Linux平台上中文界面乱码问题的解决
  4. 快手 算法工程师 0825 笔试题
  5. modification of global variable “Promise.prototype.finally“ is not allowed when using plugins at app
  6. jQuery框架学习第八天:ASP.NET jQuery实施方案
  7. 服务器搭建mutt邮件发送环境
  8. Ubuntu Hudson 安装配置
  9. 小笔记-简单但够用系列_informix静默安装
  10. 将XSD文件转为java实体类
  11. 攻城狮算保险--理财型,还是消费型?
  12. IT之家精华:苹果iOS系统发布/固件下载/升级更新大全表~
  13. fpga与asic的区别
  14. EXE捆绑机制作原理
  15. PLC M8000 M8001 M8002 M8003
  16. deepin改无盘服务器,UbuntuDeepin系统上搭建nfs服务器
  17. word与EndNote管理文献~引文格式问题
  18. The package javax.swing is not accessible错误的三种解决办法,亲测有效
  19. 如何利用“跑腿系统”来提高生活效率?
  20. leetcode:2448. 使数组相等的最小开销【猜结论落在给定点 + 考虑初始值和变化量 + 三分法模板学习】

热门文章

  1. 腾讯云-轻量应用服务器部署Springboot项目+后台持续运行
  2. Python自动化网络运维
  3. kubernetes ingress更改日志格式
  4. 关于Qt翻译在Vs编辑器上面出现乱码问题
  5. iframe基础入门使用
  6. Linux下安装python集成开发环境——Ulipad
  7. 用javascript编写的打字小游戏
  8. php去除字符串空格
  9. Cognos安装详解
  10. vmware 快照用关机吗_vmware安装安卓