博主信息
博文 5
粉丝 0
评论 2
访问量 6871
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
Java动态雪花屏保
亚哥的博客
原创
969人浏览过
package screen;

/*
 * JFrame
 */
import javax.swing.JFrame;

import com.sun.awt.AWTUtilities;

public class ScreenFrame {
   public static void main(String[] args){
       JFrame f=new JFrame();
       ScreenPanel p=new ScreenPanel();
       f.add(p);
       f.setSize(1366, 768);
       f.setUndecorated(true);//去边框
       AWTUtilities.setWindowOpaque(f, false);//透明设置
       f.setLocationRelativeTo(null);//居中
       f.setDefaultCloseOperation(3);
       f.setVisible(true); 
       f.setTitle("屏幕保护");
       f.addMouseListener(p);//注册鼠标监听器
       f.addKeyListener(p);
       f.addMouseMotionListener(p);
       p.move();
   }   
}
package screen;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.ImageIcon;
import javax.swing.JPanel;
//ctrl+d 删除
//ctrl +shift+o导包
//单继承多实现
@SuppressWarnings("serial")
public class ScreenPanel extends JPanel implements MouseListener,KeyListener,MouseMotionListener{
    
    int x=200,y=300;
    //定义一个数组来管理雪花x的坐标
    int[] bx=new int[100];
    //定义一个数组来管理雪花y的坐标
    int[] by=new int[100];
    //定义一个数组来管理小球的路径
    int dir[] =new int [100];
    //初始化:赋值在构造方法中
    //语法:public 类名(){} 没有返回值 方法名和类名一样。
    public ScreenPanel(){
        for(int i=0;i<bx.length;i++){
            bx[i]=(int)(Math.random()*1366);
            by[i]=(int)(Math.random()*768);
            dir[i]=(int)(Math.random()*4)+1;}
        }
    
    public void paint(Graphics g){//画笔 Graphics
        super.paint(g);
        setBackground(Color.WHITE);
        setOpaque(false);//透明设置
        //Font f=new Font("楷体",Font.PLAIN,24);创建字体对象
        //g.setFont(f);设置字体
        g.setFont(new Font("微软雅黑",Font.PLAIN,24));
        g.setColor(Color.RED);
        for(int i=1;i<50;i++)
       {
           g.setColor(Color.WHITE);
           g.setFont(new Font("宋体",Font.PLAIN,25));
           //g.drawString("*",a,b);
           Image img=new ImageIcon("src/2.png").getImage();
            g.drawImage(img,bx[i], by[i], null);   } 
       }
    //自定义方法
    public void move(){
        //匿名内部类
        new Thread(){
        public void run(){
         while(true){
         //改坐标 
         for(int i=1;i<100;i++){
                if (dir[i] == 1) {
                    bx[i] += 10;
                    by[i] += 10;}
              
                if (dir[i] == 2){
                    bx[i] -= 10;
                    by[i] += 10;}
                
                if (dir[i] == 3) {
                    bx[i] -= 10;
                    by[i] -= 10;}
                
                if (dir[i] == 4) {
                    bx[i] += 10;
                    by[i] -= 10;}
                //边界值
                if (bx[i] > 1366) {
                    if (dir[i] == 1) {
                        dir[i] = 2;}
                    if (dir[i] == 4) {
                        dir[i] = 3;}}
                
                if (bx[i]<0) {
                    if (dir[i] == 2) {
                        dir[i] = 1;}
                    if (dir[i] == 3) {
                        dir[i] = 4;}}
                
                if (by[i]>768) {
                    if (dir[i] == 1){
                        dir[i] = 4;}
                    if (dir[i] == 2){
                        dir[i]= 3;}}
                
                if (by[i]<0) {
                    if (dir[i] == 4){
                        dir[i] = 1;}
                    if (dir[i] == 3){
                        dir[i] = 2;}}}
             repaint();
             try{
             //休眠
             Thread.sleep(50);}
             catch(InterruptedException e){
         e.printStackTrace();}} }}.start();}
    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO 自动生成的方法存根
        //点击鼠标退出
        System.exit(0);
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO 自动生成的方法存根
        
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO 自动生成的方法存根
        
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO 自动生成的方法存根
        
    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO 自动生成的方法存根
        
    }
    @Override
    public void keyTyped(KeyEvent e) {
        // TODO 自动生成的方法存根
        
    }
    @Override
    public void keyPressed(KeyEvent e) {
        // TODO 自动生成的方法存根
        System.exit(0);
    }
    @Override
    public void keyReleased(KeyEvent e) {
        // TODO 自动生成的方法存根
        
    }

    @Override
    public void mouseDragged(MouseEvent e) {
        // TODO 自动生成的方法存根
        System.exit(0);
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        // TODO 自动生成的方法存根
    
    }
    

}


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学