返回列表 發帖

滑鼠事件

一、滑鼠事件說明
視窗應用程式中,滑鼠是最常使用的輸入工具。Java用滑鼠來處理觸發事件的傾聽機制,方式有「實作MouseListener介面」、「繼承MouseAdapter類別」、「實作MouseMotionListener介面」、「繼承MouseMotionAdapter類別」,在本單元我們將練習實作MouseListener介面。

二、MouseListener介面與MouseAdapter類別皆提供了五個滑鼠事件處理方法
1. void mouseClicked(MouseEvent e)
 當滑鼠鍵被按一下時所觸發的事件,包括按下及放開的過程。
2. void mousePressed(MouseEvent e)
 當滑鼠鍵被按下時所觸發的事件。
3. void mouseReleased(MouseEvent e)
 當已按下的滑鼠鍵被放開時所觸發的事件。
4. void mouseEntered(MouseEvent e)
 當滑鼠指標移入來源物件時所觸發的事件。
5. void mouseExited(MouseEvent e)
 當滑鼠指標從來源物件移出來時所觸發的事件。

三、MouseMotionListener介面與MouseMotionAdapter類別皆提供了二個滑鼠事件處理方法
1. void mouseMoved(MouseEvent e)
 當滑鼠指標在來源物件內移動時所觸發的事件。
2. void mouseDragged(MouseEvent e)
 當滑鼠指標拖曳來源物件時所觸發的事件。

四、MouseEvent類別常用的方法
1. int getX()
 傳回滑鼠指標在視窗物件內的水平座標。
2. int getY()
 傳回滑鼠指標在視窗物件內的垂直座標。
3. int getClickCount()
 傳回滑鼠鍵被按了幾下。
4. int getButton()
 傳回滑鼠被按下或放開的鍵是哪一個按鍵。若傳回1,表示左鍵;傳回2,表示中鍵;傳回3,表示右鍵。

五、實作MouseListener介面
滑鼠事件的「事件來源」就是視窗物件,因此要使用 addMouseListener(this) 敘述將視窗物件與滑鼠事件傾聽者連結在一起。

實作點擊滑鼠左鍵1次後,圖片左上角對準至滑鼠指標位置.


實作點擊滑鼠左鍵2次後,圖片正中央對準至滑鼠指標位置.
  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.ImageIcon;
  4. import java.awt.event.MouseListener;
  5. import java.awt.event.MouseEvent;

  6. public class Ch98 implements MouseListener{
  7.         
  8.     private JFrame fm;
  9.     private JLabel lb;
  10.     private ImageIcon icon,target;
  11.     private int x=100,y=100;
  12.         
  13.     Ch98()
  14.     {
  15.         icon=new ImageIcon(Ch98.class.getResource("pic/star.png"));
  16.         target=new ImageIcon(Ch98.class.getResource("pic/santa.png"));
  17.                
  18.         lb=new JLabel(target);
  19.         lb.setBounds(x, y, 128, 128);
  20.                
  21.         fm=new JFrame("滑鼠指標牽引圖形");
  22.         fm.setBounds(100, 100, 420, 320);
  23.         fm.setIconImage(icon.getImage());
  24.         fm.setVisible(true);
  25.         fm.setResizable(false);
  26.         fm.setLayout(null);
  27.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  28.         fm.add(lb);
  29.         fm.addMouseListener(this);
  30.     }
  31.         
  32.     public void mousePressed(MouseEvent e)
  33.     {
  34.         if(e.getClickCount()==1)
  35.         {
  36.             x=e.getX()-3;
  37.             y=e.getY()-25;
  38.         }
  39.         if(e.getClickCount()==2)
  40.         {
  41.             x=e.getX()-3-64;
  42.             y=e.getY()-25-64;
  43.         }
  44.         lb.setLocation(x, y);
  45.     }
  46.     public void mouseReleased(MouseEvent e){}
  47.         
  48.     public void mouseClicked(MouseEvent e){}
  49.         
  50.     public void mouseEntered(MouseEvent e){}
  51.         
  52.     public void mouseExited(MouseEvent e){}

  53.     public static void main(String[] args) {
  54.         new Ch98();
  55.     }

  56. }
複製代碼

  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.ImageIcon;
  4. import java.awt.event.MouseListener;
  5. import java.awt.event.MouseEvent;

  6. public class Ch98 implements MouseListener{
  7.         
  8.     private JFrame fm;
  9.     private JLabel lb;
  10.     private ImageIcon icon,target;
  11.     private int x=100,y=100;
  12.         
  13.     Ch98()
  14.     {
  15.         icon=new ImageIcon(Ch98.class.getResource("pic/star.png"));
  16.         target=new ImageIcon(Ch98.class.getResource("pic/santa.png"));
  17.                
  18.         lb=new JLabel(target);
  19.         lb.setBounds(x, y, 128, 128);
  20.                
  21.         fm=new JFrame("滑鼠指標牽引圖形");
  22.         fm.setBounds(100, 100, 420, 320);
  23.         fm.setIconImage(icon.getImage());
  24.         fm.setVisible(true);
  25.         fm.setResizable(false);
  26.         fm.setLayout(null);
  27.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  28.         fm.add(lb);
  29.         fm.addMouseListener(this);
  30.     }
  31.         
  32.     public void mousePressed(MouseEvent e)
  33.     {
  34.         if(e.getClickCount()==1)
  35.         {
  36.             x=e.getX()-3;
  37.             y=e.getY()-25;
  38.         }
  39.         if(e.getClickCount()==2)
  40.         {
  41.             x=e.getX()-3-64;
  42.             y=e.getY()-25-64;
  43.         }
  44.         lb.setLocation(x, y);
  45.     }
  46.     public void mouseReleased(MouseEvent e){}
  47.         
  48.     public void mouseClicked(MouseEvent e){}
  49.         
  50.     public void mouseEntered(MouseEvent e){}
  51.         
  52.     public void mouseExited(MouseEvent e){}

  53.     public static void main(String[] args) {
  54.         new Ch98();
  55.     }

  56. }
複製代碼
OrzorzoRZ0rZ0RZORoRZ0rz

TOP

  1. import java.awt.event.MouseEvent;
  2. import java.awt.event.MouseListener;
  3. import javax.swing.JFrame;
  4. import javax.swing.JLabel;
  5. import javax.swing.ImageIcon;

  6. public class Ch87 implements MouseListener
  7. {
  8.         JFrame fm;
  9.         ImageIcon ic,ii;
  10.         JLabel lb;
  11.         int x=200,y=100;
  12.         
  13.         Ch87()
  14.         {
  15.                 ii=new ImageIcon(Ch87.class.getResource("pic/santa.png"));
  16.                 ic=new ImageIcon(Ch87.class.getResource("pic/star.png"));
  17.                  
  18.                 lb=new JLabel(ii);
  19.                 lb.setBounds(x, y, 128, 128);
  20.                         
  21.                 fm=new JFrame("MouseEvent");
  22.                 fm.setIconImage(ic.getImage());
  23.                 fm.setBounds(100, 100, 410, 320);
  24.                 fm.setVisible(true);
  25.                 fm.setResizable(false);
  26.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  27.                 fm.setLayout(null);
  28.                 fm.add(lb);        
  29.                 fm.addMouseListener(this);
  30.         }
  31.                 @Override
  32.                 public void mouseClicked(MouseEvent e) {}
  33.                 @Override
  34.                 public void mouseEntered(MouseEvent e) {}
  35.                 @Override
  36.                 public void mouseExited(MouseEvent e) {}
  37.                 @Override
  38.                 public void mousePressed(MouseEvent e)
  39.                 {
  40.                         if(e.getClickCount()==1)
  41.                         {
  42.                                 x=e.getX()-3;
  43.                                 y=e.getY()-25;
  44.                         }
  45.                         if(e.getClickCount()==2)
  46.                         {

  47.                                 x=e.getX()-3-64;
  48.                                 y=e.getY()-25-64;
  49.                         }
  50.                         lb.setLocation(x, y);
  51.                 }
  52.                 @Override
  53.                 public void mouseReleased(MouseEvent e) {}
  54.                
  55.         public static void main(String[] args) {
  56.             new Ch87();
  57.     }
  58. }
複製代碼

TOP

  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.ImageIcon;
  4. import java.awt.event.MouseListener;
  5. import java.awt.event.MouseEvent;

  6. public class Ch98 implements MouseListener{
  7.         
  8.     private JFrame fm;
  9.     private JLabel lb;
  10.     private ImageIcon icon,target;
  11.     private int x=100,y=100;
  12.         
  13.     Ch98()
  14.     {
  15.         icon=new ImageIcon(Ch98.class.getResource("pic/star.png"));
  16.         target=new ImageIcon(Ch98.class.getResource("pic/santa.png"));
  17.                
  18.         lb=new JLabel(target);
  19.         lb.setBounds(x, y, 128, 128);
  20.                
  21.         fm=new JFrame("滑鼠指標牽引圖形");
  22.         fm.setBounds(100, 100, 420, 320);
  23.         fm.setIconImage(icon.getImage());
  24.         fm.setVisible(true);
  25.         fm.setResizable(false);
  26.         fm.setLayout(null);
  27.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  28.         fm.add(lb);
  29.         fm.addMouseListener(this);
  30.     }
  31.         
  32.     public void mousePressed(MouseEvent e)
  33.     {
  34.         if(e.getClickCount()==1)
  35.         {
  36.             x=e.getX()-3;
  37.             y=e.getY()-25;
  38.         }
  39.         if(e.getClickCount()==2)
  40.         {
  41.             x=e.getX()-3-64;
  42.             y=e.getY()-25-64;
  43.         }
  44.         lb.setLocation(x, y);
  45.     }
  46.     public void mouseReleased(MouseEvent e){}
  47.         
  48.     public void mouseClicked(MouseEvent e){}
  49.         
  50.     public void mouseEntered(MouseEvent e){}
  51.         
  52.     public void mouseExited(MouseEvent e){}

  53.     public static void main(String[] args) {
  54.         new Ch98();
  55.     }

  56. }
複製代碼
高睿辰是幹話之王

TOP

  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.ImageIcon;
  4. import java.awt.event.MouseListener;
  5. import java.awt.event.MouseEvent;

  6. public class Ch98 implements MouseListener{
  7.         
  8.     private JFrame fm;
  9.     private JLabel lb;
  10.     private ImageIcon icon,target;
  11.     private int x=100,y=100;
  12.         
  13.     Ch98()
  14.     {
  15.         icon=new ImageIcon(Ch98.class.getResource("pic/star.png"));
  16.         target=new ImageIcon(Ch98.class.getResource("pic/santa.png"));
  17.                
  18.         lb=new JLabel(target);
  19.         lb.setBounds(x, y, 128, 128);
  20.                
  21.         fm=new JFrame("滑鼠指標牽引圖形");
  22.         fm.setBounds(100, 100, 420, 320);
  23.         fm.setIconImage(icon.getImage());
  24.         fm.setVisible(true);
  25.         fm.setResizable(false);
  26.         fm.setLayout(null);
  27.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  28.         fm.add(lb);
  29.         fm.addMouseListener(this);
  30.     }
  31.         
  32.     public void mousePressed(MouseEvent e)
  33.     {
  34.         if(e.getClickCount()==1)
  35.         {
  36.             x=e.getX()-3;
  37.             y=e.getY()-25;
  38.         }
  39.         if(e.getClickCount()==2)
  40.         {
  41.             x=e.getX()-3-64;
  42.             y=e.getY()-25-64;
  43.         }
  44.         lb.setLocation(x, y);
  45.     }
  46.     public void mouseReleased(MouseEvent e){}
  47.         
  48.     public void mouseClicked(MouseEvent e){}
  49.         
  50.     public void mouseEntered(MouseEvent e){}
  51.         
  52.     public void mouseExited(MouseEvent e){}

  53.     public static void main(String[] args) {
  54.         new Ch98();
  55.     }

  56. }
複製代碼
一年不見,如隔四季

TOP

  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.ImageIcon;
  4. import java.awt.event.MouseListener;
  5. import java.awt.event.MouseEvent;

  6. public class Ch98 implements MouseListener{
  7.         
  8.     private JFrame fm;
  9.     private JLabel lb;
  10.     private ImageIcon icon,target;
  11.     private int x=100,y=100;
  12.         
  13.     Ch98()
  14.     {
  15.         icon=new ImageIcon(Ch98.class.getResource("pic/star.png"));
  16.         target=new ImageIcon(Ch98.class.getResource("pic/santa.png"));
  17.                
  18.         lb=new JLabel(target);
  19.         lb.setBounds(x, y, 128, 128);
  20.                
  21.         fm=new JFrame("滑鼠指標牽引圖形");
  22.         fm.setBounds(100, 100, 420, 320);
  23.         fm.setIconImage(icon.getImage());
  24.         fm.setVisible(true);
  25.         fm.setResizable(false);
  26.         fm.setLayout(null);
  27.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  28.         fm.add(lb);
  29.         fm.addMouseListener(this);
  30.     }
  31.         
  32.     public void mousePressed(MouseEvent e)
  33.     {
  34.         if(e.getClickCount()==1)
  35.         {
  36.             x=e.getX()-3;
  37.             y=e.getY()-25;
  38.         }
  39.         if(e.getClickCount()==2)
  40.         {
  41.             x=e.getX()-3-64;
  42.             y=e.getY()-25-64;
  43.         }
  44.         lb.setLocation(x, y);
  45.     }
  46.     public void mouseReleased(MouseEvent e){}
  47.         
  48.     public void mouseClicked(MouseEvent e){}
  49.         
  50.     public void mouseEntered(MouseEvent e){}
  51.         
  52.     public void mouseExited(MouseEvent e){}

  53.     public static void main(String[] args) {
  54.         new Ch98();
  55.     }

  56. }
複製代碼
七日不見 如隔一周

TOP

返回列表