Board logo

標題: 滑鼠事件 (四) [打印本頁]

作者: tonyh    時間: 2015-10-17 14:52     標題: 滑鼠事件 (四)

本帖最後由 tonyh 於 2016-6-16 13:10 編輯

實作 MouseListener 與 MouseMotionListener 介面, 以完成滑鼠指標拖曳圖形之動作.

[attach]1431[/attach]

[attach]1432[/attach]
  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.MouseMotionListener;
  6. import java.awt.event.MouseEvent;

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

  53.     public void mouseDragged(MouseEvent e)
  54.     {
  55.         if(!isDrag)
  56.             return;
  57.         x2=e.getX();
  58.         y2=e.getY();
  59.         x+=(x2-x1);
  60.         y+=(y2-y1);
  61.         lb.setLocation(x, y);
  62.     }
  63.     public void mouseMoved(MouseEvent e){}
  64.         
  65.     public static void main(String[] args) {
  66.         Ch90 app=new Ch90();
  67.     }

  68. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2