1. 程式人生 > >JAVA=====動態影象的控制實現

JAVA=====動態影象的控制實現

/*
時間:
	2012—11-01
作者:
	煙大陽仔
程式要求:
	編寫一段程式,要求實現幾個圖片的載入並且實現動態的圖片運動效果。
程式解釋:
	一:先從簡單的一個圖片的動態實現開始(註釋程式碼部分),
		實現一個圖片的動態:就是建立時間物件並且啟用時間物件;
		當時間物件啟用時就呼叫actionPerformed()
		根據該方法的命令實現動態:
		時間啟用一次位置就上升10個單位,
		直達變數值小於10的時候再生成一個新的影象
	二:現在的程式結構比較精簡而且比較容易操作執行,
		儘量進行如此的編寫風格
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Day1101_Frame extends JFrame implements ActionListener
{
	public static void main(String[] args) 
	{
		Day1101_Frame d=new Day1101_Frame();//建構函式

	}
	Timer timer[]=new Timer[3];//時間物件
	int py[]=new int[3];
	JLabel l2[]=new JLabel[3];//標籤
	JLabel l1;
	public Day1101_Frame()
	{
		super("動態視窗!");//名稱
		Container c=getContentPane();//建立容器
		c.setLayout(null);//設定佈局格式
		c.setBackground(Color.blue);//設定背景色
		ImageIcon i1=new ImageIcon("p1.gif");//載入圖片
		ImageIcon i2=new ImageIcon("p2.gif");
		l1=new JLabel(i1);//建立標籤
		l1.setSize(68,90);//設定大小
		l1.setLocation(37,40);//設定位置
		c.add(l1);//新增到容器
		for (int i=0;i<3 ; i++)//for迴圈實現的位置已經圖片的控制
		{
			l2[i]=new JLabel(i2);
			l2[i].setSize(68,90);
			l2[i].setLocation(100+i*100,200);
			c.add(l2[i]);
			timer[i]=new Timer(100+100*i,this);//時間物件的控制
			py[i]=200;//位置的控制
			timer[i].start();//啟用時間物件
		}
		/*l2=new JLabel(i2);
		l2.setSize(68,90);
		l2.setLocation(100,200);
		c.add(l2);
		timer=new Timer(100,this);
		py=200;
		timer.start();*/
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(400,400);
		setVisible(true);
	}
	public void actionPerformed(ActionEvent e)
	{
		for (int i=0;i<3 ;i++ )//監聽事件並進行操作的處理
		{
			if(e.getSource()==timer[i])//實現動態的核心語句在這裡
			{
			py[i]-=10;
			if(py[i]<10)
				py[i]=200;
			l2[i].setLocation(l2[i].getLocation().x,py[i]);//獲取新的位置
			}
		}
		
	}
}