發新話題

[JAVA] 展示滑鼠事件處理

[JAVA] 展示滑鼠事件處理

引用:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ui8 extends JFrame
{
   Image img;
   int imgpt=52;
   int x,y;
    public ui8()
    {
        super("滑鼠事件處理");
        // 弄一張圖來娛樂一下
        img=Toolkit.getDefaultToolkit().createImage("bridge/"+imgpt+".GIF");
        //設定滑鼠事件處理程式
        addMouseMotionListener(new procmouse());
        addMouseListener(new checkmouse());
        setSize(600,480);
        x=100;
        y=100;
        show();
    }
    public void paint(Graphics g)
    {
        super.paint(g);
        g.drawImage(img, x,y, this);//跟著滑鼠畫出圖
    }
  /*****實作滑鼠移動事件處理物件 *******/
    class procmouse extends MouseMotionAdapter
    {
         /*****實作滑鼠移動事件處理方法 *******/
         public void mouseMoved(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[]) //程式起點
    {
        ui8 app=new ui8(); //畫圖
        //處理視窗關閉要求
        app.addWindowListener(
             new WindowAdapter()
             {
                public void windowClosing(WindowEvent e)
                {  System.exit(0);}
             });
    }
}
引用:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ui9a extends JFrame implements ActionListener
{
    Image img;
    int imgpt=52;
    int x,y;
    Timer timer;
    public ui9a()
    {
        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
        show();
    }
    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(); //重新顯示一次
        }
        /**用滑鼠按鍵的狀態來控制Timer是否運作**/
        public void mousePressed(MouseEvent e)
        {
            timer.stop(); //進入拖曳,停止timer
        }
        public void mouseReleased(MouseEvent e)
        {
            timer.start();//離開拖曳,開始timer
        }
    }
    public static void main(String args[]) //程式起點
    {
        ui9a app=new ui9a(); //畫圖
        //處理視窗關閉要求
        app.addWindowListener(
         new WindowAdapter()
         {
            public void windowClosing(WindowEvent e)
            {  System.exit(0);}
         });
    }
}

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。