码迷,mamicode.com
首页 > 其他好文 > 详细

雪花飘啊飘

时间:2015-10-22 00:20:19      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

 1 package snow2;
 2 
 3 import java.io.FileNotFoundException;
 4 import java.io.IOException;
 5 
 6 public class Test {
 7     public static void main(String[] args) throws FileNotFoundException, IOException {
 8         MyFrame frame = new MyFrame();
 9         frame.init();
10         
11         
12         
13     }
14
15}






 1 package snow2;
 2 
 3 import java.awt.image.BufferedImage;
 4 import java.io.File;
 5 import java.io.FileInputStream;
 6 import java.io.FileNotFoundException;
 7 import java.io.IOException;
 8 
 9 import javax.imageio.ImageIO;
10 import javax.swing.ImageIcon;
11 import javax.swing.JFrame;
12 import javax.swing.JLabel;
13 
14 public class MyFrame {
15     
16     private JFrame frame ; 
17     private MyPanel panel;
18     private JLabel label ;
19     
20     public void addPanel(){
21         panel = new MyPanel();
22         frame.add(panel);
23         panel.Down();
24         
25     }
26     
27     /**]
28      *构建窗体
29      * @throws IOException 
30      * @throws FileNotFoundException 
31      */
32     public void init() throws FileNotFoundException, IOException{
33         String path = "t8.jpg";
34         File file = new File(path);
35         //创建图片流
36         BufferedImage bi =ImageIO .read(new FileInputStream(file));
37         frame = new JFrame();
38         label = new JLabel(new ImageIcon(bi));
39         
40         addPanel();
41         //添加图片在面板中
42         panel.add(label);
43         //设置此窗体是否可以改变大小
44         frame.setResizable(false);
45         //设置title
46         frame.setTitle("下雪了");
47         //设置尺寸
48         frame.setSize(800, 600);
49         //设置窗体在最中间
50         frame.setLocationRelativeTo(null);
51         //设置程序始终在最前端
52         frame.setAlwaysOnTop(true);
53         //设置关闭窗体时结束程序
54         frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
55         //设置窗体始终是可见的,一定要放在程序的最下方
56         
57         frame.setVisible(true);
58 
59 
60     }
61 }

 

 
  1 package snow;
  2 
  3 import java.awt.Color;
  4 import java.awt.Font;
  5 import java.awt.Graphics;
  6 
  7 import javax.swing.JPanel;
  8 
  9 /**
 10  *面板中对雪花进行操作 
 11  */
 12 
 13 public class MyPanel extends JPanel{
 14 
 15     
 16     
 17     //横向 和 竖向 存储雪花的集合
 18     private int[] xx ;
 19     private int[] yy ;
 20     
 21     //存放不同雪花字体的数组
 22     private Font[] fs ;
 23     
 24     
 25     /**
 26      *空参构造 
 27      */
 28     public MyPanel(){
 29         
 30         
 31         //横向 和 竖向 存储雪花的数目
 32         xx = new int[300];
 33         yy = new int[300];
 34         
 35         
 36         //雪花在窗体中产生的位置
 37         for(int i = 0 ; i < xx.length ; i ++){
 38             xx[i] = (int)(Math.random() * 800);
 39             yy[i] = (int)(Math.random() * 600);
 40         }
 41         
 42         fs = new Font[15];
 43         //
 44         for(int i = 0 ; i < fs.length ; i ++){
 45             //Font("是什么字体" , "设置字体是粗体...","设置字体的大小");
 46             fs[i] = new Font("宋体", Font.BOLD, 12 + i );
 47         }
 48     }
 49 
 50     /**
 51      *paint() 重写   切传入一个画笔对象 
 52      */
 53     //系统自动执行
 54     @Override
 55     public void paint(Graphics g) {
 56         super.paint(g);
 57         
 58         //改变当前的背景颜色
 59         this.setBackground(Color.BLACK);
 60         //设置画笔的颜色
 61         g.setColor(Color.WHITE);
 62         
 63         //
 64         for(int i = 0 ; i < xx.length ; i ++){
 65             //设置每个位置的字体
 66             g.setFont(fs[i%15]);
 67             //画笔对象写入的位置
 68             g.drawString("*", xx[i], yy[i]);
 69         }
 70     }
 71     
 72     /**
 73      *雪花飘落 
 74      */
 75     public void down(){
 76         //线程
 77         new Thread(){
 78             public void run(){
 79                 //不确定停止的时间,
 80                 while(true){
 81                     /**
 82                      *往下飘
 83                      *x坐标不变, y坐标增加 
 84                      */
 85                     for(int i = 0 ; i < yy.length ; i ++){
 86                         yy[i]+=3;
 87                         
 88                         //每一个雪花下落到最下方的时候,再次从新开始出现
 89                         if(yy[i] > 600){
 90                             yy[i] = 0;
 91                         }
 92                     }
 93                     
 94                     for(int i = 0 ; i < xx.length ; i ++){
 95                         xx[i]++;
 96                         
 97                         if(xx[i]>=800){
 98                             xx[i]=0;
 99                         }
100                     }
101                     
102                     //刷屏
103                     repaint();
104                     
105                     //睡眠时间
106                     try {
107                         Thread.sleep(20);
108                     } catch (InterruptedException e) {
109                         e.printStackTrace();
110                     }
111                 }
112             }
113         }.start();
114     }
115     
116     
117     
118 }

 

效果实现

技术分享

雪花飘啊飘

标签:

原文地址:http://www.cnblogs.com/sdfd101/p/4899490.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!