满天星_Java实例_源码+图片素材

运行效果:
在这里插入图片描述
源代码:

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();// 调用移动
	}

}

图片素材:
在这里插入图片描述
注:图片须和代码在一个包下
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_46672746/article/details/107172361