win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.setVisible(true);
}
}
ShowImageJPanel.java 负责背景和启动线程
import java.awt.*;
import javax.swing.*;
public class ShowImageJPanel extends JLayeredPane {
JTabbedPane pImage; //放置图片
Toolkit tool; //用于获取图像
Image img;
Thread threadRandomSnow[]; //雪花线程
Thread threadSnow[]; //雪花线程
int width,height; //图像宽和高
ShowImageJPanel(String imageName,int N,int w,int h) {
width = w;
height= h;
threadSnow = new Thread[N];
threadRandomSnow = new Thread[N];
setLayout(null);
tool = getToolkit;
img = tool.getImage(imageName);
for(int i=0;i<N;i++) {
threadRandomSnow[i] = new Thread(new SnowFlower(true,this,width,height));
threadRandomSnow[i].start;
}
for(int i=0;i<N;i++) {
threadSnow[i] = new Thread(new SnowFlower(false,this,width,height));
threadSnow[i].start;
}
}
【耿老师教你学Java:《飘雪》-初学多线程】public void paintComponent(Graphics g ) {
super.paintComponent(g);
g.drawImage(img,0,0,width,height,this);
}
}
SnowFlower.java 负责创建雪花线程的目标对象
import java.awt.*;
import javax.swing.*;
import java.awt.geom.*;
import java.util.Random;
public class SnowFlower extends JPanel implements Runnable {
int x,y; //雪花的位置
int size;//雪花的大小
Graphics2D g_2d;
Ellipse2D ellipse;
JLayeredPane panel;
Random random;
int widthImg;
int heightImg;
SnowFlower(boolean randomSize,JLayeredPane p,int w,int h) {
this.widthImg = w;
this.heightImg = h;
setBorder(null);
setOpaque(false);//透明
random = new Random;
panel = p;
if(randomSize)
randomSize;
else
fixedSize;
}
void randomSize{
panel.add(this,JLayeredPane.DRAG_LAYER);
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
