以下是一个简单的QQ空间下雪效果的Java代码示例
```java
import java.awt.*;
import javax.swing.*;
public class SnowFall extends JFrame {
private int width, height;
private int snowCount;
private int[] snowXPositions, snowYPositions;
private int[] snowSpeed;
private Color[] snowColors;
public SnowFall(int width, int height, int snowCount) {
this.width = width;
this.height = height;
this.snowCount = snowCount;
snowXPositions = new int[snowCount];
snowYPositions = new int[snowCount];
snowSpeed = new int[snowCount];
snowColors = new Color[snowCount];
for (int i = 0; i < snowCount; i++) {
snowXPositions[i] = (int) (Math.random() * width);
snowYPositions[i] = (int) (Math.random() * height);
snowSpeed[i] = (int) (Math.random() * 5 + 1);
snowColors[i] = Color.WHITE;
}
setBounds(300, 200, width, height);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setResizable(false);
}
public void paint(Graphics g) {
g.setColor(Color.BLACK);
g.fillRect(0, 0, width, height);
for (int i = 0; i < snowCount; i++) {
g.setColor(snowColors[i]);
g.fillOval(snowXPositions[i], snowYPositions[i], 5, 5);
snowYPositions[i] += snowSpeed[i];
if (snowYPositions[i] > height) {
snowXPositions[i] = (int) (Math.random() * width);
snowYPositions[i] = 0;
snowSpeed[i] = (int) (Math.random() * 5 + 1);
snowColors[i] = Color.WHITE;
}
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
repaint();
}
public static void main(String[] args) {
new SnowFall(800, 600, 200);
}
}
```
该代码创建了一个名为SnowFall的JFrame,通过在画布上绘制白色小圆点来模拟下雪效果。在paint方法中,先绘制黑色背景,然后循环绘制每个雪片,更新雪片的y位置并重新绘制画面。每次循环后,程序暂停100毫秒以控制帧率。在main方法中创建SnowFall对象时,可以设置窗口大小和雪片数量。
本文转载: