欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-07 19:14:06
...

运行效果:
满天星_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();// 调用移动
	}

}

图片素材:
满天星_Java实例_源码+图片素材
注:图片须和代码在一个包下
满天星_Java实例_源码+图片素材