/***************************************** 展示Timer事件處理 *************************************************/ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ui9 extends JFrame implements ActionListener { Image img; int imgpt=52; int x,y; Timer timer; public ui9() { super("滑鼠事件處理"); // 弄一張圖來娛樂一下 img=Toolkit.getDefaultToolkit().createImage("bridge/"+imgpt+".GIF"); //設定滑鼠事件處理程式 addMouseMotionListener(new procmouse()); addMouseListener(new checkmouse()); setSize(600,480); x=100; y=100; timer=new Timer(1000,this);//設定 timer timer.start(); //啟動 timer setVisible(true); } public void paint(Graphics g) { super.paint(g); g.drawImage(img, x,y, this);//跟著滑鼠畫出圖 } //實作 Timer 事件 /**這個method就是每次timer啟動時呼叫的method**/ public void actionPerformed(ActionEvent e) { x=x-20; y=y-5; if (x<40) x=550;//太左邊 if (y<100) y=480;//太上面 repaint(); //由於要呼叫 repaint(),所以必須把呼叫物件指標送過來 } /*****實作滑鼠移動事件處理物件 *******/ class procmouse extends MouseMotionAdapter { /*****實作滑鼠移動事件處理方法 *******/ public void mouseDragged(MouseEvent e) { //取得X Y座標 x=e.getX(); y=e.getY(); if (y>80) //太上面就不要show了 repaint(); } } /*****實作滑鼠事件處理物件 *******/ class checkmouse extends MouseAdapter { /*****實作滑鼠事件處理方法 *******/ public void mouseClicked(MouseEvent e) { int button=e.getButton(); //JDK 1.3不認識左右鍵 if (button==e.BUTTON1) //左鍵換牌 { imgpt=imgpt+1; if (imgpt>52) imgpt=10; } else if (button==e.BUTTON3) //右鍵換牌 { imgpt=imgpt-1; if (imgpt<10) imgpt=52; } //重新抓圖 img=Toolkit.getDefaultToolkit().createImage("bridge/"+imgpt+".GIF"); repaint(); //重新顯示一次 } } public static void main(String args[]) //程式起點 { ui9 app=new ui9(); //畫圖 //處理視窗關閉要求 app.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0);} }); } }