爱学习的小伙伴们,可能都学习过java,但是你知道java鼠标双击事件是怎么实现的吗?不知道的话跟着小编一起来学习了解java鼠标双击事件吧。

java鼠标双击事件实例介绍

public class MyMouseListener

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秒执行,而在这段时间里等待第二次单击,如果有第二次单击,那么我们执行双击事件任务,取消单击任务;如果在这段时间没有等到再次单击,那么执行单击任务.

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

public class MyMouseListener

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 文件即可

ava鼠标双击事件相关文章:

1.怎么用JS实现鼠标单击与双击事件共存

2.鼠标单击变成双击怎么解决

3.鼠标单击变双击或者多击怎么解决

4.鼠标单击变双击的修复方法

5.计算机网络实验论文

java监听鼠标双击_java鼠标双击事件 java鼠标双击监听相关推荐

  1. java中是否支持多重继承_java支持多重继承吗 JAVA特性面试题:

    1.简要介绍java程序的健壮性. 答:JAVA程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏. 2.为什 ...

  2. java 画笔跟swing组件_Java学习教程(基础)--Java版本历史(二)

    Java语言自JDK1.0版本以来经历了许多次更新,也在基本程序库中增加了大量的类别和包.从J2SE 1.4开始,Java语言的变动由 Java Community Process(JCP)管理,JC ...

  3. java date只保留年月日_java.util.Date、java.sql.Date、java.sql.Timestamp区别和总结

    在web开发中,避免不了对日期的操作,就几种常见的日期操作做个总结(部分参考网络,在此表示感谢): java.util.Date.java.sql.Datej.java.sql.Timestamp j ...

  4. java sql date 时分秒_java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间...

    java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Da ...

  5. java数据类型 两大类_Java公开课|将Java数据类型分为这两大类,就能涵盖所有类型...

    [摘要]作为一门面向对象编程语言,Java吸收了C++语言的优点,也展现了其强大的一面,我们能在各个地方看到其功能强大和简单易用的两个特征,当然,也吸引了很多程序员的注意力,所以就有人想了解Java的 ...

  6. java 鼠标拖动_java 让表项支持鼠标拖动移位,并自动滚动滚动条

    设想我们有一个表,表中有很多数据(多到竖起滚动条至少要出现).我们需要一个功能:用鼠标拖动某些项,然后将他们移动另一个位置,例如我们可能想一些名字相似啊,或者是内容相关度更高的数据项在一起. 要支持鼠 ...

  7. java面向对象编程集合边框_Java学习系列(七)Java面向对象之集合框架详解(上)

    Java集合 有时也将集合称为容器类,它的作用就是用来"装对象"的.这里要注意的是集合也可以是对象.下面先看一张图: HashSet:底层用一个数组存元素 --而且这个数组的长度永 ...

  8. java日期用什么属性_java日期以及使用Java反射机制遍历实体类的属性和类型

    fmt:formatDate 的输出格式 fmt关于时间格式的输出 2004-5-31 23:59:59 2004-4-1 23:59:59 JSTL标签fmt:formatDate引起的中文乱码问题 ...

  9. java 远程debug 内网_java jdb remote debug - java远程调试

    简介 用log来做调试的方法低效茫目 远程调试是jdk自带的一个有利调试工具,可以快速定位问题 在工作机上使用eclipse来自带的remote debug 问题 运维禁止使用remote debug ...

  10. java最广泛的运行环境_Java运行环境下载|Java SE Runtime Environment(Java运行环境)8.0.131 官方多语言正式版_ - 极光下载站...

    Java SE Runtime Environment(Java运行环境)官方版下载,Java SE Runtime Environment是运行JAVA程序不可缺少的环境,许多程序员都必须安装的运行 ...

最新文章

  1. JavaScript数据结构和算法
  2. 自动化运维工具——ansible安装及模块介绍
  3. 修改左侧导航显示样式(转载自Sunmoonfire's artistic matrix)
  4. python的基本语法while true_Python正课15 —— 流程控制之while循环
  5. SCI论文图片拼接Tips
  6. 实时记录运动轨迹插件_浅谈 leaflet 地图插件的使用(制作飞机航线图)
  7. 从零和到竞合 亚马逊为何联姻国美?
  8. 【无人机三维路径规划】基于帝国企鹅算法实现无人机三维路径规划附matlab代码
  9. 个人理财--知识点总结
  10. 有什么助于睡眠的方法,睡眠不好,一定要知道这些方法
  11. 1154.一年中的第几天
  12. mean IOU是什么意思
  13. 操作系统安装前的操心
  14. 温度记录仪和传感器的校准知识
  15. Flask—静态资源配置
  16. 宽带连接错误的处理办法651、691、623、678、645、720、721、718、734、769
  17. 花千骨23日服务器维护,花千骨手游12日服务器数据互通维护通知
  18. [JVM]了断局: JDK8默认配置.
  19. 洛谷——P2862 [USACO06JAN]把牛Corral the Cows
  20. 一名优秀的销售人员应该具备哪些素质和能力?

热门文章

  1. python pyecharts生成图表
  2. 拥有梦想的时候 拿出勇气和行动
  3. MySQL如何统计表格的总行数
  4. 某云不限速破解详细教程附工具
  5. 冰蝎软件的配置与应用
  6. 【LeetCode】643. 子数组最大平均数 I
  7. 计算机网络基础以及进程查看管理
  8. Mac便捷小工具收集
  9. win7或win2008系统中,出现【已停止工作,联机检查解决方案并关闭该程序,关闭程序】解决方法!
  10. 辛甫生算法c语言,[转载]实变函数,计算方法程序,康托图