`

用定时器延时单击事件实现鼠标双击事件,单击和双击事件互不影响!

阅读更多
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Date;
import java.util.Timer;

/**
 * 用定时器延时单击事件实现鼠标双击事件,单击和双击事件互不影响!
 */
public class UserMouseAdapter extends MouseAdapter {

	private boolean flag = false;// 用来判断是否已经执行双击事件
	private int clickNum = 0;// 用来判断是否该执行双击事件

	public void mouseClicked(MouseEvent e) {
		final MouseEvent me = e;// 事件源

		this.flag = false;// 每次点击鼠标初始化双击事件执行标志为false

		if (this.clickNum == 1) {// 当clickNum==1时执行双击事件
			this.mouseDoubleClicked(me);// 执行双击事件
			this.clickNum = 0;// 初始化双击事件执行标志为0
			this.flag = true;// 双击事件已执行,事件标志为true
			return;
		}

		// 定义定时器
		Timer timer = new Timer();

		// 定时器开始执行,延时0.2秒后确定是否执行单击事件
		timer.schedule(new java.util.TimerTask() {
			private int n = 0;// 记录定时器执行次数

			public void run() {
				if (flag) {// 如果双击事件已经执行,那么直接取消单击执行
					n = 0;
					clickNum = 0;
					this.cancel();
					return;
				}
				if (n == 1) {// 定时器等待0.2秒后,双击事件仍未发生,执行单击事件
					mouseSingleClicked(me);// 执行单击事件
					flag = true;
					clickNum = 0;
					n = 0;
					this.cancel();
					return;
				}
				clickNum++;
				n++;
			}
		}, new Date(), 200); // 设置延迟时间
	}

	/** */
	/**
	 * 鼠标单击事件
	 * 
	 * @param e
	 *            事件源参数
	 */
	public void mouseSingleClicked(MouseEvent e) {
		// System.out.println("Single Clicked!");
	}

	/** */
	/**
	 * 鼠标双击事件
	 * 
	 * @param e
	 *            事件源参数
	 */
	public void mouseDoubleClicked(MouseEvent e) {
		// System.out.println("Doublc Clicked!");
	}
}

 

分享到:
评论

相关推荐

    JAVA中的鼠标双击事件

    下面是用定时器延时单击事件实现鼠标双击事件,单击和双击事件互不影响的示例代码: ```java public class MyMouseListener extends java.awt.event.MouseAdapter { private static boolean flag = false; // 用来...

    qt 区分鼠标左键单击,双击事件

    在Qt编程中,区分鼠标左键的单击和双击事件并不像键盘事件那样直接提供对应的信号和槽函数。在标准的Qt事件处理机制中,`QMouseEvent`类提供了鼠标按键按下、释放等事件,但并没有区分单击和双击。然而,开发者可以...

    C# winform 单击与双击事件同时存在例子

    值得注意的是,这种方法虽然能实现单击和双击的区分,但并不能完美模拟系统的原生行为,可能会影响用户体验。在某些情况下,考虑重新设计用户交互方式,或者根据具体需求选择只响应单击或双击事件,可能更为合适。 ...

    js单击事件和双击事件并存绑定

    "js单击事件和双击事件并存绑定"这个主题涉及到如何让一个元素同时响应单击(click)和双击(dblclick)事件,而不互相冲突。这在实现某些交互功能时非常有用,比如,单击可能打开一个菜单,而双击则可能编辑内容。...

    使用OnTouch实现一个控件同时设置单击、双击、长按事件demo

    综上所述,通过`OnTouchListener`,我们可以灵活地实现对控件的单击、双击和长按事件的监听,从而提供更加丰富的用户交互体验。在实际项目中,根据需求可以进行相应的优化和定制,以满足各种复杂场景。

    单片机定时器延时程序

    2. **硬件定时器延时**:利用单片机内部的定时器实现延时更为精确,且不会占用太多的CPU资源。 - **示例代码**(基于12MHz晶振): ```assembly DELAY1: MOV R7, #0AH ; 晶振12MHz,延时0.5秒 AJMP DELAY DELAY...

    【java鼠标双击事件怎么实现】java 鼠标双击事件.docx

    这种方式能够确保单击和双击事件互不影响。 #### 代码示例 下面是一个具体的实现示例,它展示了如何使用计时器来实现上述策略: ```java import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; ...

    Java鼠标双击事件.

    总结来说,处理Java中的鼠标双击事件需要开发者自己实现逻辑,通常通过结合`getClickCount()`方法和计时器来实现。这种自定义的方法能够确保在双击事件发生时正确地处理单击和双击,避免了不必要的事件冲突。

    STM32F103 HAL状态机实现按键消抖,处理按键单击,双击,三击,长按事件,开启定时器中断处理

    STM32F103 HAL状态机实现按键消抖,处理按键单击,双击,三击,长按事件,开启定时器中断处理

    基于jquery实现的鼠标左中右键单双击及拖拽和滚轮事件插件原型

    本篇文章将深入探讨如何基于jQuery实现一个功能丰富的鼠标事件插件,包括左键、中键、右键的单击、双击、拖拽事件,以及滚轮事件。 首先,我们来看标题提及的"基于jquery实现的鼠标左中右键单双击及拖拽和滚轮事件...

    STM32按键(单击、双击、长按)

    STM32中的按键处理主要包括单击、双击和长按三种模式,每种模式都有其特定的实现原理和应用场景。 ### 1. 概述 STM32的按键输入通常通过GPIO(General-Purpose Input/Output)端口来检测。当用户按下按键时,对应...

    stm32滴答定时器延时和时间轴

    滴答定时器(Systick)是STM32内置的一种特殊功能定时器,它以固定的频率产生周期性中断,通常用于系统时钟管理和实现软件延时。在四轴飞行器等实时性要求高的应用中,精确的延时控制和时间轴管理至关重要。 ...

    解决 MFC 的 双击 和 单击 存在的 缺陷

    然而,在处理用户输入事件时,尤其是在设计具有单击和双击功能的界面时,MFC库中存在一些固有缺陷,可能导致用户体验下降。本篇文章将深入探讨这些问题,并提供解决方案,帮助你优化你的MFC应用程序。 首先,让我们...

    嵌入式STM32按键状态机-单击双击长按操作

    实现单击双击长按操作 硬件资源: 按键(PA0,也称之为WK_UP) 定时器3 串口1,用于打印输出 按键事件: 长按事件:任何大于 1秒 按下并释放事件(不支持连按,需连按,稍微修改状态机即可) 单击事件:按下时间不超过...

    TIMER-INTEERUPT.zip_singlea88_定时器延时_定时器延时1S

    "TIMER-INTEERUPT.zip_singlea88_定时器延时_定时器延时1S"这个压缩包文件内容很可能是关于如何配置和使用51单片机的定时器0中断来创建一个1秒的延时程序。这里,我们将深入探讨51单片机的定时器0中断及其在延时功能...

    paomadeng.rar_定时器延时_定时器跑马灯

    当定时器溢出(即计数值达到最大后回零)时,会产生中断请求,通过中断服务程序来实现延时。在跑马灯程序中,延时主要用于控制LED点亮或熄灭的时间间隔,以产生平滑的滚动效果。 跑马灯的实现通常涉及以下步骤: 1...

    STC8单片机的按键单击、双击、长按的代码实现

    在STC8单片机编程中,实现按键的单击、双击和长按功能是一项基本但至关重要的任务。这通常涉及到硬件接口设计、中断处理和时间管理等多个方面。下面我们将详细探讨这些知识点。 首先,我们需要了解STC8单片机。STC8...

    STM32F4 SysTick定时器配置延时函数,库函数 精准毫秒级延时

    STM32F4系列微控制器是基于ARM Cortex-M4内核的高性能MCU,广泛应用于嵌入式系统设计。...通过正确的配置和编程,我们可以利用SysTick实现精准的毫秒级延时,这对于实时控制、事件同步等应用至关重要。

    dingshiqi.zip_定时器延时

    相比软件延时(例如使用循环计数来延迟),定时器延时更准确,因为它依赖于硬件中断,不受CPU负载的影响。 在Keil软件中,我们通常会使用C语言来编写定时器初始化和处理中断的服务函数。首先,我们需要配置定时器的...

    JS中双击和单击事件冲突的解决方法

    当用户双击一个元素时,由于双击事件比单击事件的触发时间短,可能在双击事件触发前,单击事件已经先被触发,导致单击事件被执行两次。这种现象显然不符合预期,因此我们需要找到一种方法来解决这个问题。 解决这种...

Global site tag (gtag.js) - Google Analytics