当在一个组件上按下,释放,点击,移动或拖动鼠标时就会产生鼠标事件。MouseEvent对象捕获这个事件.

     MouseEvent类继承InputEvent类,所以MouseEvent对象可以使用InputEvent类中定义的方法。


     java.awt.point类表示一个点,该类包含两个用来表示坐标的公共变量x和y。


     为了创建一个point,可以使用Point(int x,int y)


InputEvent类中的方法:


     getWhen():  long                                      返回事件发生的时间


     isAltDown(): boolean                                 如果按下alt返回true


     isControlDown():  boolean                          如果按下ctrl返回true


     isShiftDown():  boolean                              如果按下shift返回true


MouseEvent类中的方法:


     getButton():  int                                         表明是否点击鼠标按钮



     getClickCount():  int                                    返回相关事件的鼠标点击数


     getPoint():   java.awt.point                         返回包含X坐标和Y坐标的point对象


     getX():int                                                返回鼠标点的X


     getY():   int                                               返回鼠标点的Y




java提供了两个处理鼠标事件的监听器接口MouseListener和MouseMotionListener。


实现MouseListener接口可以监听鼠标的按下,释放,输入,退出和点击动作。


实现MouseMotionListener接口可以监听拖动鼠标和鼠标的移动动作。




mousePressed(e: MouseEvent): void                                                     在源组件上按下鼠标按钮


mouseReleased(e: MouseEvent):  void                                                   释放源组件上的鼠标按钮


mouseClicked(e: MouseEvent):  void                                                       在源组件上点击鼠标按钮


mouseEntered(e: MouseEvent):  void                                                      在鼠标进入源组件之后被调用


mouseExited(e: MouseEvent):  void                                                       在鼠标退出源组件之后被调用


     

mouseDragged(e: MouseEvent):  void                         按下按钮移动鼠标按钮之后被调用


mouseMoved(e: MouseEvent):  void                            不按住按钮移动鼠标之后被调用





实现一个程序,在面板中显示一条信息,可以用鼠标移动这条信息,信息会随着鼠标的移动而移动,信息总是显示在指针处。



import  
  java.awt.*;
 
 
import  
  java.awt.event.*;
 
 
import  
  javax.swing.*;
 
 
public  
  class  
  MoveMessageDemo  
  extends  
  JFrame {
 
 
         
  public  
  MoveMessageDemo(){
 
 
              MovableMessagePanel p =  
  new  
  MovableMessagePanel( 
  "Welcome to java"  
  );
 
 
              setLayout(  
  new  
  BorderLayout());
 
 
              add(p);
 
 
       }
 
         
  public  
  static  
  void  
  main(String[] args)
 
 
       {
 
 
              MoveMessageDemo frame =  
  new  
  MoveMessageDemo();
 
 
              frame.setTitle(  
  "MoveMessageDemo" 
  );
 
 
              frame.setSize(200,100);
 
 
              frame.setLocationRelativeTo(  
  null 
  );
 
 
              frame.setDefaultCloseOperation(JFrame.  
  EXIT_ON_CLOSE 
  );
 
 
              frame.setVisible(  
  true 
  );
 
 
       }
 
         
  static  
  class  
  MovableMessagePanel 
  extends  
  JPanel{
 
                
  private  
  String  
  message  
  =  
  "Welcome to java"  
  ;
 
                
  private  
  int  
  x  
  = 20;
 
                
  private  
  int  
  y  
  = 20;
 
 
                
  public  
  MovableMessagePanel(String s){
                      
  message  
  = s;
 
 
                     addMouseMotionListener(  
  new  
  MouseMotionAdapter(){
 
 
                             
  public  
  void  
  mouseDragged(MouseEvent e){
 
                                    
  x  
  = e.getX();
 
 
                                    
  y  
  = e.getY();
 
 
                                  repaint();
 
 
                           }
 
 
                     });
 
 
              }
 
              
  protected  
  void  
  paintComponent(Graphics g){
 
 
                       
  super 
  .paintComponent(g);
 
 
                     g.drawString(  
  message 
  ,  
  x 
  ,  
  y 
  );

              }
 
 
       }
 
 
}