Java彩球屏保的制作
一、首先建立包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彩球屏保的制作相关推荐
- 简单的WIN32屏保开发制作(可播放视频)
本文不同于VC下使用ScrnSave.lib进行屏保制作的方式, 而是在VS下以其内在原理,从无到有进行一个简单的WIN32屏保开发, 只要你拥有一些简单的WIN32程序编写的经验,便可以很轻松的明白 ...
- WPF 制作 Windows 屏保
分享如何使用WPF 制作 Windows 屏保 WPF 制作 Windows 屏保 作者:驚鏵 原文链接:https://github.com/yanjinhuagood/ScreenSaver 框架 ...
- windows server 2016域控屏保策略设置
1.使用Photo Screensaver Maker工具制作scr格式的屏保 2.制作完成的scr格式屏保文件,将文件放入服务器 3.新建策略在用户配置-策略-管理模板-控制面板-个性化依次启用红色 ...
- Android动画屏保,Android Daydream 互动屏保
Android Daydream 互动屏保 API19 API23 Create:2016-03-01 继承DreamService来实现一个自定义屏保 Dreams是当充电的设备空闲,或者插入底座时 ...
- 学以致用——Java源码——使用随机几何图形制作屏保程序(Screen Saver with Shapes Using the Java 2D API)
程序功能: 使用随机输出的几何图形作为屏保程序,用户可随时指定屏幕上要显示的图形元素的数量. 运行示例: 源码: 1. 实体类 import java.awt.Graphics; import jav ...
- 罗盘时钟制作代码_抖音八卦时钟手机屏保设置方法!
声明:部分内容来源网络 抖音时钟数字罗盘屏保最近十分的火爆, 看上去很有意思也很有趣, 很多人都想要弄. 而抖音时钟数字罗盘屏保如何设置? 今天小编就教大家如何30秒内搞定 其实这个非常的简单, 只要 ...
- flash设置屏保 html,用Flash制作屏保-FlashWiz
当朋友们在网上漫步时,看到那些丰富多采的Flash(动画)时,会不会眼馋?会不会心动?会不会想把它们作为屏幕保护程序来一饱眼福呢?在这里介绍一个把Flash制作成屏幕保护的程序-FlashWiz.Fl ...
- Windows窗体应用c#制作屏保
一.Windows 窗体应用程序 Windows窗体应用程序:是在用户计算机上运行的客户端应用程序,可显示信息.请求用户输入以及通过网络与远程计算机进行通信. 二.常用的控件 控件名称一般为表示控件类 ...
- tkinter tkinter 制作屏保制作屏保
今天看到的,随手转一下 import random import tkinterclass RandomBall():'''定义球的类'''def __init__(self, canvas, scr ...
最新文章
- MODE ——计算了 任意多个数字的平均值(知识点:for的循环)
- QT学习:代理(Delegate)练习
- WebSphere Application Server 5.0在Linux平台上中文界面乱码问题的解决
- 快手 算法工程师 0825 笔试题
- modification of global variable “Promise.prototype.finally“ is not allowed when using plugins at app
- jQuery框架学习第八天:ASP.NET jQuery实施方案
- 服务器搭建mutt邮件发送环境
- Ubuntu Hudson 安装配置
- 小笔记-简单但够用系列_informix静默安装
- 将XSD文件转为java实体类
- 攻城狮算保险--理财型,还是消费型?
- IT之家精华:苹果iOS系统发布/固件下载/升级更新大全表~
- fpga与asic的区别
- EXE捆绑机制作原理
- PLC M8000 M8001 M8002 M8003
- deepin改无盘服务器,UbuntuDeepin系统上搭建nfs服务器
- word与EndNote管理文献~引文格式问题
- The package javax.swing is not accessible错误的三种解决办法,亲测有效
- 如何利用“跑腿系统”来提高生活效率?
- leetcode:2448. 使数组相等的最小开销【猜结论落在给定点 + 考虑初始值和变化量 + 三分法模板学习】