国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

更好的捕捉鼠標事件

2019-11-18 11:50:25
字體:
來源:轉載
供稿:網友

  更好的捕捉鼠標事件---看看流行的和過時的鼠標事件
  
  原作: Tony Sintes
  
  編譯: Jeru Liu
  
  原文出處: http://www.javaworld.com/javaworld/javaqa/2000-07/02-qa-0714-mouse.Html
  
  MouseListener 方法接口中的mouseClicked() 方法和mousePRessed() 方法
  
  有什么區別?
  
  這是一個熱門的話題,讓我們來深入的找尋答案,Java’s AWT 庫 提供了兩個接口來監聽和接收鼠標事件. 一個是 java.awt.event.MouseListener:
  
  
  
  
  public interface MouseListener extends EventListener
  
  {
  
  public void mousePressed(MouseEvent e);
  
  public void mouseReleased(MouseEvent e);
  
  public void mouseClicked(MouseEvent e);
  
  public void mouseEntered(MouseEvent e);
  
  public void mouseExited(MouseEvent e);
  
  }
  
  另一個是 java.awt.event.MouseMotionListener:
  
  
  public interface MouseMotionListener extends EventListener
  
  {
  
  public void mouseDragged(MouseEvent e);
  
  public void mouseMoved(MouseEvent e);
  
  }
  
  Swing 提供了 MouseInputListener, 這個接口的同時擴展了MouseMotionListener 和 MouseListener 接口.
  
  讓我們來看看這些接口中的方法:
  
  · mousePressed() 當用戶按下鼠標按鈕時發生.
  
  · mouseReleased() 當用戶松開鼠標按鈕時發生.
  
  · mouseClicked() 當用戶按下并松開鼠標按鈕時發生. 用戶在選擇或雙擊圖標的時候通常會點擊鼠標按鈕. 用戶假如在松開鼠標之前移動鼠標,點擊不會導致鼠標相應事件出現.
  
  · 因為點擊鼠標是按下鼠標和松開鼠標的結合, 在事件分配給 mouseClicked() 方法之前, mousePressed() 和 mouseReleased() 方法已同時被調用.
  
  · mouseEntered() 當鼠標離開當前組件并進入你所監聽的組件時激活事件.
  
  · mouseExited() 當鼠標離開你所監聽的組件時發生.
  
  · mouseDragged() 當用戶按下鼠標按鈕并在松開之前進行移動時發生.在mouseDragged() 后松開鼠標不會導致mouseClicked().
  
  · mouseMoved() 當鼠標在組件上移動而 不時拖動時發生.
  
  要監聽鼠標事件就必須調用這些接口之一,或擴展一個鼠標適配器(mouse adapters) 類. AWT 提供了兩種監聽適配器(listener adapters): java.awt.event.MouseAdapter 和 java.awt.event.MouseMotionAdapter.
  
  Swing 為MouseInputListener提供了一個叫做javax.swing.event.MouseInputAdapter的適配器. 有了適配器你就不必調用接口中每個方法了. 取而代之, 你只需簡單的擴展適配器并重寫你要監聽的方法就可以了.
  假如你還是很迷惑, 再看看API 并寫個小測試程序. 有時嘗試理解不同事件的最好方法different events. 我寫了一個小小的應用程序來表現兩種鼠標事件的區別.這里是完整的代碼:
  
  
  import java.awt.*;
  
  import java.awt.event.*;
  
  public class MouseTest extends Frame
  
  {
  
  public MouseTest()
  
  {
  
  Button b = new Button("JavaWorld JavaQ&A");
  
  b.addActionListener( new ActionListener() {
  
  public void actionPerformed(ActionEvent e)
  
  {
  
  System.exit(0);
  
  }
  
  }
  
  );
  
  add(b,BorderLayout.NORTH);
  
  addMouseListener(new MouseTest.MouseHandler());
  
  addMouseMotionListener(new MouseTest.MouseMotionHandler());
  
  }
  
  
  // MouseHandler is an inner class that implements the MouseListener.
  
  // Each method simply prints out a message to the command line.
  
  private class MouseHandler implements MouseListener
  
  {
  
  public void mousePressed(MouseEvent e)
  
  {
  
  System.out.println("mouse pressed");
  
  }
  
  public void mouseClicked(MouseEvent e)
  
  {
  
  System.out.println("moused clicked");
  
  }
  
  public void mouseReleased(MouseEvent e)
  
  {
  
  System.out.println("mouse released");
  
  }
  
  public void mouseEntered(MouseEvent e)
  
  {
  
  System.out.println("mouse entered");
  
  }
  
  public void mouseExited(MouseEvent e)
  
  {
  
  System.out.println("mouse exited");
  
  }
  
  }
  
  // MouseMotionHandler is an inner class that implements the MouseMotionListener.
  
  // Each method simply prints out a message to the command line.
  
  private class MouseMotionHandler implements MouseMotionListener
  
  {
  
  public void mouseMoved(MouseEvent e)
  
  {
  
  System.out.println("mouse moved");
  
  }
  
  public void mouseDragged(MouseEvent e)
  
  {
  
  System.out.println("mouse dragged");
  
  }
  
  }
  
  public static void main(String[] args)
  
  {
  
  new MouseTest().show();
  
  }
  
  }
  
  這個應用程序建立了一個窗口和一個按鈕.當你移動鼠標并按下按鈕時, 應用程序就會在命令行打印出文本消息, 讓你看到鼠標響應和事件間的對應關系.
  
  象上邊那樣寫一個小小的測試程序是對生疏的API 進行試驗的好方法.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涿鹿县| 集贤县| 罗甸县| 鄂托克前旗| 宁波市| 虞城县| 社会| 利津县| 罗甸县| 保靖县| 建瓯市| 抚远县| 乌什县| 吴旗县| 通海县| 桐柏县| 准格尔旗| 玉田县| 剑阁县| 平定县| 湖南省| 西贡区| 吉安市| 永德县| 安泽县| 宝丰县| 邻水| 揭东县| 西乡县| 永靖县| 专栏| 天柱县| 西城区| 区。| 札达县| 日照市| 崇信县| 湖口县| 托克逊县| 邹城市| 平凉市|