首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

Java基础:流行的和过时的鼠标事件解决办法

2012-03-21 
Java基础:流行的和过时的鼠标事件MouseListener方法接口中的mouseClicked()方法和mousePressed()方法有什

Java基础:流行的和过时的鼠标事件
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   进行试验的好方法.  
  

                             转赛迪

[解决办法]
接分就行了
[解决办法]
LZ想说什么,没明白
[解决办法]
不管怎么样.搂主的精神可嘉!!
[解决办法]
up jf
[解决办法]
我最操心就是鼠标双击事件怎么分离出来?别的事件含义看api文档大致都明白了。
还有探出快捷菜单的事件怎么样独立出来

热点排行