天天看點

Java GUI之MouseListener、MouseMotionListener

用于接收元件上“感興趣”的滑鼠事件(按下、釋放、單擊、進入或離開)的 偵聽器接口。 public interface  MouseListenerextends EventListener (要跟蹤滑鼠移動和滑鼠拖動,請使用 MouseMotionListener。) 旨在處理滑鼠事件的類要麼實作此接口(及其包含的所有方法),要麼擴充抽象類 MouseAdapter(僅重寫所需的方法)。 然後使用元件的 addMouseListener 方法将從該類所建立的偵聽器對象向該元件注冊。當按下、釋放或單擊(按下并釋放)滑鼠時會生成滑鼠事件。滑鼠光标進入或離開元件時也會生成滑鼠事件。發生滑鼠事件時,将調用該偵聽器對象中的相應方法,并将 MouseEvent 傳遞給該方法

public class Mouse extends JFrame {
   /**
    * 
    */
   private static final long serialVersionUID = 1L;
   private JLabel label;

   public Mouse() {
      super("mouse");
      Container container = getContentPane();
      container.setLayout(new BorderLayout());
      label = new JLabel();
      container.add(label, BorderLayout.SOUTH);
      setSize(300, 300);
      setVisible(true);
      Handler1 handler1 = new Handler1();
      Handler2 handler2 = new Handler2();
      container.addMouseListener(handler1);
      container.addMouseMotionListener(handler2);
   }

   public class Handler1 implements MouseListener {
      public void mouseClicked(MouseEvent e) {
         label.setText("滑鼠點選的坐标[" + e.getX() + "," + e.getY() + "]");
      }

      public void mousePressed(MouseEvent e) {
         label.setText("滑鼠經過的坐标[" + e.getX() + "," + e.getY() + "]");
      }

      public void mouseReleased(MouseEvent e) {
         label.setText("滑鼠釋放的坐标[" + e.getX() + "," + e.getY() + "]");
      }

      public void mouseEntered(MouseEvent e) {
         // JOptionPane.showMessageDialog(null, "滑鼠進入視窗");
      }

      public void mouseExited(MouseEvent e) {
         label.setText("滑鼠在視窗之外");
      }
   }

   public class Handler2 implements MouseMotionListener {
      public void mouseDragged(MouseEvent e) {
         label.setText("滑鼠拖拽的坐标[" + e.getX() + "," + e.getY() + "]");
      }

      public void mouseMoved(MouseEvent e) {
         label.setText("滑鼠移動的坐标[" + e.getX() + "," + e.getY() + "]");
      }
   }

   public static void main(String[] args) {
      Mouse g = new Mouse();
      g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }
}      
源碼位址:https://github.com/followwwind/javase