博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
鼠标双击事件不可描述的问题
阅读量:6485 次
发布时间:2019-06-23

本文共 2117 字,大约阅读时间需要 7 分钟。

鼠标点击事件

1 public class MyMouseListener 2     extends java.awt.event.MouseAdapter { 3  4   public void mouseClicked(MouseEvent e) { 5     System.out.println("clicked"); 6     int clickTimes = e.getClickCount(); 7     if (clickTimes == 2) { 8       System.out.println("Doublc Clicked!"); 9     }10   }11 }

但监听双击事件时总是出发单击事件,这就不能满足笔者的需求了,于是查了一些资料对其进行了一些扩展。

思路:对第一次监听的单击事件延时0.2秒执行,而在这段时间里等待第二次单击,如果有第二次单击,那么我们执行双击事件,取消单击事件;如果在这段时间没有等到再次单击,那么执行单击任务.

1 public class MyMouseListener extends java.awt.event.MouseAdapter { 2   private static boolean flag=false;//用来判断是否已经执行双击事件 3   private static int clickNumber=0;//用来判断是否该执行双击事件 4  5   public void mouseClicked(MouseEvent e) { 6     final MouseEvent mouseEvent=e;//事件源 7  8     this.flag=false;//每次点击鼠标初始化双击事件执行标志为false 9 10     if (this.clickNumber == 1) {
//当clickNumber==1时执行双击事件11       this.mouseDoubleClicked(mouseEvent);//执行双击事件12       this.clickNumber=0;//初始化双击事件执行标志为013       this.flag=true;//双击事件已执行,事件标志为true14       return;15     }16 17     //定义定时器18     java.util.Timer timer=new java.util.Timer();19 20     //定时器开始执行,延时0.2秒后确定是否执行单击事件21     timer.schedule(new java.util.TimerTask() {22       private int n=0;//记录定时器执行次数23       public void run() {24         if(MyMouseListener.flag){
//如果双击事件已经执行,那么直接取消单击执行25           n=0;26           MyMouseListener.clickNumber=0;27           this.cancel();28           return;29         }30         if (n == 1) {
//定时器等待0.2秒后,双击事件仍未发生,执行单击事件31           mouseSingleClicked(mouseEvent);//执行单击事件32           MyMouseListener.flag = true;33           MyMouseListener.clickNumber=0;34           n=0;35           this.cancel();36           return;37         }38         clickNumber++;39         n++;40       }41     },new java.util.Date(),200);42   }43 44   /**45    * 鼠标单击事件46    * @param e 事件源参数47    */48   public void mouseSingleClicked(MouseEvent e){49     System.out.println("Single Clicked!");50   }51 52   /**53    * 鼠标双击事件54    * @param e 事件源参数55    */56   public void mouseDoubleClicked(MouseEvent e){57     System.out.println("Doublc Clicked!");58   }59 }

 

转载于:https://www.cnblogs.com/sunBinary/p/9856388.html

你可能感兴趣的文章
函数对象
查看>>
最全最新个税计算公式---今天你税了吗?
查看>>
linux shell 正则表达式(BREs,EREs,PREs)差异比较(转,当作资料查)
查看>>
二分法求平方根(Python实现)
查看>>
使用startActivityForResult方法(转)
查看>>
so在genymotation中错误问题
查看>>
Visual Studio 原生开发的10个调试技巧(二)
查看>>
Windows内核再次出现0Day漏洞 影响win2000到win10所有版本 反病毒软件恐成瞎子
查看>>
H3C品牌刀片系统强势首发
查看>>
【CSS系列】图像映射
查看>>
First blood
查看>>
java 冒泡排序和快速排序 实现
查看>>
SQL存储过程中的几个常见设定SET QUOTED_IDENTIFIER/NOCOUNT/XACT_ABORT ON/OFF
查看>>
Silverlight与Flash区别之一
查看>>
删除恢复Hadoop集群中的DataNode
查看>>
Silverlight 2动态创建矩形对象(附完整源代码)
查看>>
从京东技术演进看互联网企业的成长历程
查看>>
MFC ado+mysql+odbc技术分享
查看>>
js中让字符串中特定字符红色显示
查看>>
HttpClient4.5教程-第二章-连接管理
查看>>