满天星_Java实例_源码+图片素材
程序员文章站
2022-04-07 19:14:06
...
运行效果:
源代码:
package star;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
/*
* 满天星
* JFrame---窗体(画板)
* JPanel---面板(画纸)
* Star extends JPanel---子类继承父类
*/
public class Star2 extends JPanel {
// 定义300颗星星的坐标
int[] x = new int[300];
int[] y = new int[300];
// 定义300颗星星的颜色数量
Color[] color = new Color[300];
// 构造方法,用于给成员变量赋值
// 构造方法在new对象的时候自动被调用。。。
Star2() {
// 300颗,需要获取每一颗进行随机赋值坐标
for (int i = 0; i < 300; i++) {
x[i] = (int) (Math.random() * 1024);
y[i] = (int) (Math.random() * 500);
// 设置随机生成颜色,RGB三原色,000白色最亮,255,255,255黑色
int R = (int) (Math.random() * 255);
int G = (int) (Math.random() * 255);
int B = (int) (Math.random() * 255);
color[i] = new Color(R, G, B);
}
}
// 定义背景图片
public static BufferedImage background;
// 加载图片
static {
try {
background = ImageIO.read(Star.class.getResource("background.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
}
// 创建画笔方法
public void paint(Graphics g) {
// 画背景
g.drawImage(background, 0, 0, null);
// 画星星之前设置其大小、字体格式
g.setFont(new Font("微软雅黑", Font.BOLD, 24));
// 画一颗星星
for (int i = 0; i < 300; i++) {
g.setColor(color[i]);
g.drawString("*", x[i], y[i]);
}
}
// 创建移动方法,该方法是我们自己造的方法,需要在主方法里调用
public void move() {
// 创建定时器对象,导包java.util
Timer timer = new Timer();
// TimerTask---导包java.util
timer.schedule(new TimerTask() {
public void run() {
// 移动
for (int i = 0; i < 300; i++) {
y[i]++;// 向下移动
if (y[i] > 500) {
y[i] = 0;
}
x[i]--;
if (x[i] < 0) {
x[i] = 1024;
}
}
repaint();// 界面刷新
}
}, 10, 10);
}
public static void main(String[] args) {
// 创建窗体对象
JFrame frame = new JFrame();
// 创建面板对象
// JPanel panel=new JPanel();
Star2 panel = new Star2();
// 把面板添加到窗体里面
frame.add(panel);
// 设置窗体的尺寸
frame.setSize(1024, 500);
// 设置窗体位置居中
frame.setLocationRelativeTo(null);
// 设置标题
frame.setTitle("满天星");
// 关闭窗体后,程序后天运行也随之关闭
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗体可见
frame.setVisible(true);
panel.move();// 调用移动
}
}
图片素材:
注:图片须和代码在一个包下
上一篇: 程序猿 520 表白方式
下一篇: EL表达式方法的使用