用随机数函数点缀星空,画布画出两个圆,背景设置black,圆重叠实现月食效果 Timer打断再用repaint重画

package animation;

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.net.URI;
import java.net.URL;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.Timer;


public class MoonJFrame extends JFrame {
	private MoonCanvas canvas;
	
	File f;
	URI uri;
	URL url;
	public void Music(){
		try{
			this.f=new File("Faded.wav");
			uri=f.toURI();
			url=uri.toURL();//解析地址
			AudioClip aau;
			aau=Applet.newAudioClip(url);
			aau.loop();
			}catch(Exception e){e.printStackTrace();}
	}
	public MoonJFrame(){
		super("MOON");
		Dimension dim=getToolkit().getScreenSize();
		this.setBounds(dim.width/4,dim.height/4,dim.width/2,dim.height/2);
		setLocationRelativeTo(null);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.canvas=new MoonCanvas();
		canvas.setBackground(Color.black);
		this.getContentPane().add(this.canvas,"Center");
		this.setVisible(true);
		this.Music();
	}
	public static void main(String[] args) {
		new MoonJFrame();
	}
}
class MoonCanvas extends Canvas implements ActionListener{
	private Moon moon;
	private Timer timer;
	private static class Moon{
		int x;
		public boolean move;
		Moon(int x){
			this.x=x;
			boolean move=false;
		}
	}
		public MoonCanvas(){
			this.moon=new Moon(400);
			timer=new Timer(500,this);
			timer.start();
		}
	public void paint(Graphics g){
		int x=this.getWidth();
		int y=this.getHeight();
		g.setColor(Color.white);
		for(int i=0;i<100;i++){
		g.fillOval(new Random().nextInt(1000),new Random().nextInt(1000),5,5);
		}
		g.fillOval(300,80,100,100);
		g.setColor(Color.black);
		g.fillOval(moon.x,80,100,100);
		moon.x=moon.move?moon.x+10:moon.x-10;
		if(moon.x>=400||moon.x<=200){
			moon.move=!moon.move;
		}
	}
	public void actionPerformed(ActionEvent ev){
		repaint();
	}
}

效果图

音乐伴奏自选
JAVA Timer实现动画(月食)

相关文章: