Java鼠标双击事件
鼠标的单双击事件在很多时候对我们帮助很大,但是在JAVA中却没有给出鼠标双击事件.我们可以通过事件源e.getClickCount()==2来判断鼠标点击次数来实现鼠标双击事件,例如:
extends java.awt.event.MouseAdapter ... {
public void mouseClicked(MouseEvent e) ...{
System.out.println("clicked");
int clickTimes = e.getClickCount();
if (clickTimes == 2) ...{
System.out.println("Doublc Clicked!");
}
}
}
但是这样并没有达到我们的要求,因为在每次触发双击事件的同时会触发单击事件.所以我们试图改进以上方案,不使用系统提供的e.getClickCount()方法.可以考虑当第一次单击鼠标的时候让鼠标单击事件延时0.2秒执行,而在这段时间里等待第二次单击,如果有第二次单击,那么我们执行双击事件任务,取消单击任务;如果在这段时间没有等到再次单击,那么执行单击任务.
下面是用定时器延时单击事件实现鼠标双击事件,单击和双击事件互不影响!
extends java.awt.event.MouseAdapter ... {
private static boolean flag=false;//用来判断是否已经执行双击事件
private static 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;
}
//定义定时器
java.util.Timer timer=new java.util.Timer();
//定时器开始执行,延时0.2秒后确定是否执行单击事件
timer.schedule(new java.util.TimerTask() ...{
private int n=0;//记录定时器执行次数
public void run() ...{
if(MyMouseListener.flag)...{//如果双击事件已经执行,那么直接取消单击执行
n=0;
MyMouseListener.clickNum=0;
this.cancel();
return;
}
if (n == 1) ...{//定时器等待0.2秒后,双击事件仍未发生,执行单击事件
mouseSingleClicked(me);//执行单击事件
MyMouseListener.flag = true;
MyMouseListener.clickNum=0;
n=0;
this.cancel();
return;
}
clickNum++;
n++;
}
},new java.util.Date(),500);
}
/** *//**
* 鼠标单击事件
* @param e 事件源参数
*/
public void mouseSingleClicked(MouseEvent e)...{
System.out.println("Single Clicked!");
}
/** *//**
* 鼠标双击事件
* @param e 事件源参数
*/
public void mouseDoubleClicked(MouseEvent e)...{
System.out.println("Doublc Clicked!");
}
}
//Test.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test extends JFrame{
public Test(){
super("test");
init();
this.setSize(800,600);
this.setVisible(true);
}
private void init(){
JButton b=new JButton("button");
b.setBounds(50,50,100,30);
this.getContentPane().setLayout(null);
this.getContentPane().add(b);
b.addMouseListener(new MyMouseListener());
}
public static void main(String args[]){
new Test();
}
}
你将以上2个文件编译一下,再运行 Test.java 文件即可
Java鼠标双击事件相关推荐
- java监听鼠标双击_java鼠标双击事件 java鼠标双击监听
爱学习的小伙伴们,可能都学习过java,但是你知道java鼠标双击事件是怎么实现的吗?不知道的话跟着小编一起来学习了解java鼠标双击事件吧. java鼠标双击事件实例介绍 public class ...
- java 双击触发事件_java鼠标双击事件怎么实现
很多人都学习过java,但是你知道java鼠标双击事件怎么实现吗,跟着学习啦小编一起学习ava鼠标双击事件. java鼠标双击事件的实现方法 鼠标的单双击事件在很多时候对我们帮助很大,但是在JAVA中 ...
- 如何在AutoCAD中实现鼠标双击事件
摘要:本文为在AutoCAD ObjectARX二次开发中遇到的鼠标双击事件提供了多种解决方法. 在AutoCAD编程中,开发者可能会有这样一个好想法,或者用户有这么一个需求:当用鼠标双击某个实体的时 ...
- UE4鼠标双击事件实现
自定义鼠标双击事件实现的蓝图如下:
- WPF Image控件鼠标双击事件的实现
WPF Image控件鼠标双击事件的实现 1.绑定Image控件的OnMouseDown事件 <Image x:Name="Image" Margin="0&quo ...
- Unity3D 鼠标双击事件
Unity3D 鼠标双击事件 Unity3D 鼠标双击事件总结了几种,特来记录一下! 一.计时Time.realtimeSinceStartup,从开始运行到首次点击的时间.跟.开始运行到下一次点击的 ...
- 实现QLabel鼠标双击事件功能
实现QLabel鼠标双击事件功能 ReWritteQLabel.h文件 #ifndef REWRITTEQLABEL_H_ #define REWRITTEQLABEL_H_ #include #in ...
- WPF listviewItem 鼠标双击事件
WPF listviewItem 鼠标双击事件 一.Listview 控件的命名 <ListView x:Name="SListView" ItemContainerSt ...
- WPF 之 鼠标双击事件
由于WPF中没有鼠标的双击事件,因而只能通过MouseDown事件来模拟.当连续的两次MouseDown事件的时间间隔,没有超过一个设定的时间阈值时,就计算为一个双击事件,并作相应的处理. 利用WPF ...
最新文章
- 使用 Go module 后 VScode 智能提示不生效解决方案
- C++ Primer 第九章 顺序容器
- 网易青果后端系统设计窥探(二)
- 关于mvc、mvp和mvvm的理解
- 挺水的一门课,发现全系都过了,就自己挂了,这是一种什么样的感觉呢?
- android工作注意事项
- elasticsearch rest api操作
- 2019蓝桥杯省赛---java---A---8(修改数组)
- 数论 + 公式 - HDU 4335 What is N?
- 分布式搜索Elasticsearch——QueryBuilders.matchPhrasePrefixQuery
- 经典神经网络 -- RetinaNet的Focal_Loss : 设计原理与pytorch实现
- 做一个消息自动回复,但是回复内容可以在网页上面输入,用input接收,错了,别人有新增选项,本身就是在页面进行新增,页面维护...
- GBDT(MART) 迭代决策树入门教程 | 简介 写的非常好!!
- 【Python】使用Labelme标注自己的数据集并由json生成Ground Truth
- DOS-强制结束进程命令(ntsd命令/taskkill命令)使用教程
- python将图片转为矢量图
- AD转换及其相关背景知识
- Keil报错:Undefined symbol GPIO_Init
- csgo被会话踢出什么鬼_csgo莫名其妙就被vac了 打一半vac关闭解决办法
- Appscan工具的使用