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 ...
最新文章
- easyui-layout中的收缩层无法显示标题问题解决
- 8086CPU的出栈(pop)和入栈(push) 都是以字为单位进行的
- python教程:深拷贝与浅拷贝的具体区别在哪里
- Angular单元测试框架里API toHaveBeenCalledTimes的工作原理
- C++如何调用父类的方法?
- 优化 ASP.NET Core Docker 镜像的大小
- springBoot项目启动后无法访问index.html首页或其它controller
- Jquery Dialog 详解(正在学习jquery,详解转载)
- SharePoint开发中上传Excel问题 无法更新Microsoft Office文档
- 操作系统中进程的同步、互斥、通信的区别,进程与线程同步知识
- nideshop小程序商城部署
- zemax验证高斯公式_Zemax中高斯光束设置的相关问题
- 物联网服务器搭建资料汇总
- STC15W201S串口蓝牙通信PWM控制RGB彩灯
- 鸿蒙系统sp3什么意思,XP系统的那个SP3是什么意思?
- 大国崛起(三) 大不列颠及北爱尔兰联合王国(英国)
- SAP ABAP BDC录屏 数据导入和检验-实例
- 【项目记录】服务器暴力风扇改造桌上风扇
- 给服务器安装debian系统,安装Debian 10 Buster的方法
- ES聚合查询详解(四):管道聚合