JAVA=====動態影象的控制實現
阿新 • • 發佈:2019-02-13
/* 時間: 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]);//獲取新的位置 } } } }