鼠标的单双击事件

在java中鼠标双击事件可以通过java.awt.event.MouseEvent事件类下的getClickCount()方法来获取鼠标单击的次数。通过这个方法可以实现鼠标的双击事件。

Code:
  1. import java.awt.event.*;   
  2. import javax.swing.*;   
  3. public class MouseClickTest extends JFrame {   
  4.     public MouseClickTest(){   
  5.         super("鼠标双击事件练习");   
  6.         init();   
  7.         setVisible(true);   
  8.         setSize(800,500);   
  9.     }   
  10.     public void init(){   
  11.         JButton button = new JButton("双击演示按钮");   
  12.         button.addMouseListener(new MouseAdapter(){   
  13.             int n = 0;//记录鼠标敲击次数   
  14.             public void mouseClicked(MouseEvent e){   
  15.                 n = e.getClickCount();   
  16.                 if(n == 2){   
  17.                     System.out.println("鼠标双击了!");   
  18.                 }   
  19.                 if(n == 1){   
  20.                     System.out.println("鼠标单击事件!");   
  21.                 }   
  22.             }   
  23.         });   
  24.         add(button);   
  25.     }   
  26.     public static void main(String[] args){   
  27.         new MouseClickTest();   
  28.     }   
  29. }   

鼠标双击实现了。从上面程序可以看出,如果鼠标单击事件和双击事件并存的时候,单击事件也执行了。这就出现问题了。如果只想要双击事件怎么办?有一种方法是:鼠标单击一次后延迟0.5。在这0.5秒内如果有单击就判定为双击,执行双击操作,取消单击操作。如果没有就执行单击操作。

代码如下:

Code:
  1. import javax.swing.*;   
  2. import java.awt.event.*;   
  3. public class MouseTwoClickTest extends JFrame{   
  4.     public MouseTwoClickTest(){   
  5.         super("鼠标双击事件演示");   
  6.         init();   
  7.         setSize(800,700);   
  8.         setVisible(true);   
  9.     }   
  10.     public void init(){   
  11.         JButton button = new JButton("双击按钮");   
  12.         button.addMouseListener(new MyMouseListener());   
  13.         button.setBounds(100,100,200,100);   
  14.         this.getContentPane().setLayout(null);   
  15.         this.getContentPane().add(button);   
  16.     }   
  17.        
  18.     public static void main(String[] args){   
  19.         new MouseTwoClickTest();   
  20.     }   
  21. }   
  22.   
  23. class MyMouseListener extends MouseAdapter{   
  24.     public boolean clickFlag ;//记录是否已经执行过鼠标双击事件   
  25.     public int clickNum = 0//判断是否执行双击事件   
  26.        
  27.     public void mouseClicked(MouseEvent e){   
  28.         this.clickFlag = false;   
  29.            
  30.         if(clickNum == 1){//如果鼠标在规定的时间内已经被单击过一次,则说明这次是双击了,执行双击事件   
  31.             System.out.println("执行鼠标双击事件!");   
  32.             clickFlag = true;   
  33.             clickNum = 0;   
  34.             return;   
  35.         }   
  36.            
  37.         java.util.Timer timer = new java.util.Timer();//定义一个定时器   
  38.            
  39.         timer.schedule(new java.util.TimerTask(){   
  40.             int n = 0;//记录定时器执行的次数   
  41.             @Override  
  42.             public void run() {   
  43.                 // TODO Auto-generated method stub   
  44.                 if(clickFlag){//如果双击事件已经执行完毕,取消单击事件   
  45.                     clickNum = 0;   
  46.                     n = 0;   
  47.                     this.cancel();   
  48.                     return;   
  49.                 }   
  50.                 if(n == 1){//如果规定的时间内未执行鼠标双击事件则执行鼠标单击事件   
  51.                     System.out.println("执行鼠标单击事件");   
  52.                     clickFlag = true;   
  53.                     clickNum = 0;   
  54.                     n = 0;   
  55.                     this.cancel();   
  56.                     return;   
  57.                 }   
  58.                 n++;   
  59.                 clickNum++;   
  60.                    
  61.             }}, new java.util.Date(), 500);   
  62.     }   
  63. }   

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值