精华内容
下载资源
问答
  • 很多人都学习过java,但是你知道java鼠标双击事件怎么实现吗,跟着学习啦小编一起学习ava鼠标双击事件。java鼠标双击事件的实现方法鼠标的单双击事件在很多时候对我们帮助很大,但是在JAVA中却没有给出鼠标双击事件....

    很多人都学习过java,但是你知道java鼠标双击事件怎么实现吗,跟着学习啦小编一起学习ava鼠标双击事件。

    java鼠标双击事件的实现方法

    鼠标的单双击事件在很多时候对我们帮助很大,但是在JAVA中却没有给出鼠标双击事件.我们可以通过事件源e.getClickCount()==2来判断鼠标点击次数来实现鼠标双击事件,例如:

    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(),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!");

    }

    }

    public class MyMouseListener extends MouseAdapter {

    public void mouseClicked(MouseEvent evt) {

    if (evt.getClickCount() == 3) {

    // 处理鼠标三击

    } else if (evt.getClickCount() == 2) {

    // 处理鼠标双击

    }

    }

    }

    处理鼠标右键

    public mouseClicked(MouseEvent e){

    if(e.isMetaDown()){//检测鼠标右键单击

    }

    如何在小程序中处理鼠标中间键?

    new MyMouseListener());

    public class MyMouseListener extends MouseAdapter {

    public void mouseClicked(MouseEvent evt) {

    if ((evt.getModifiers() &?

    InputEvent.BUTTON1_MASK) != 0) {

    processLeft(evt.getPoint());

    //处理鼠标左键单击

    }

    if ((evt.getModifiers() &?

    InputEvent.BUTTON2_MASK) != 0) {

    processMiddle(evt.getPoint());

    //处理鼠标中间键单击

    }

    if ((evt.getModifiers() &?

    InputEvent.BUTTON3_MASK) != 0) {

    processRight(evt.getPoint());

    //处理鼠标右键单击

    java鼠标双击事件怎么实现相关文章:

    展开全文
  • 为了实现对Android任意控件和按键进行双击事件的监听,所以写了一个可以在代码中任意移植的解决方法。一、解决思路为了实现双击事件的监听,首先需要一个线程来执行两次点击事件的判断,决定是否属于一次双击事件,...

    为了实现对Android任意控件和按键进行双击事件的监听,所以写了一个可以在代码中任意移植的解决方法。

    一、解决思路

    为了实现双击事件的监听,首先需要一个线程来执行两次点击事件的判断,决定是否属于一次双击事件,为了可以实现多次监听,所以在线程中是一个死循环,避免开无数个线程;然后将判断结果通过handler传递出去,由handler对message中携带的boolean数据进行判断,决定回调双击事件监听器中的双击或单击方法,监听器中的事件由用户覆写;最后在自己想要添加双击事件监听的控件或按键的点击事件监听器中创建一个双加事件管理器并启动就可以了。

    二、准备工作

    1.创建双击事件监听器接口

    /**

    * Created by 明月春秋 on 2017/11/18.

    * 负责对是否双击事件结果的回调监听器

    * 方法:

    * 1.onSinglePress:用于处理单击事件

    * 2.onDoublePress:用于处理双击事件

    */

    public interface OnDoubleClickListener {

    /**

    * 用于处理单击事件

    */

    public void onSinglePress();

    /**

    * 用于处理双击事件

    */

    public void onDoublePress();

    }

    2.创建双击事件处理handler,用来决定是执行监听器中的双击事件还是单击事件

    /**

    * Created by 明月春秋 on 2017/11/18.

    * 负责处理双击事件的handler

    * 方法:

    * 1.setDoubleRunnable:设置handler处理所在的线程执行体

    */

    public class DoubleHandler extends Handler {

    private OnDoubleClickListener mListener;//对是否双击结果的回调监听器

    private DoubleRunnable mDoubleRunnable;//负责双击事件的线程执行体

    /**

    * 双击事件处理器的构造函数

    * @param listener

    * 对是否双击结果的回调监听器

    */

    public DoubleHandler(OnDoubleClickListener listener){

    super(Looper.getMainLooper());

    this.mListener = listener;

    }

    @Override

    public void handleMessage(Message msg) {

    if ((boolean)msg.obj){

    mListener.onDoublePress();

    }

    else {

    mListener.onSinglePress();

    }

    //通知双击事件线程执行体,事件已处理完

    mDoubleRunnable.setIsStarted(false);

    }

    /**

    * 设置handler处理所在的线程执行体

    * @param doubleRunnable

    * 传入的当前线程执行体

    */

    public void setDoubleRunnable(DoubleRunnable doubleRunnable){

    this.mDoubleRunnable = doubleRunnable;

    }

    }

    3.创建执行双击事件判断的线程执行体,在其中进行死循环,一直等待用户的点击,并对相关运行状态进行判断,将双击事件的判断结果发送给前面的DoubleHandler 进行处理

    /**

    * Created by 明月春秋 on 2017/11/18.

    * 负责双击事件的线程执行体

    * 方法:

    * 1.setPreparedState:设置当前双击事件的执行状态

    * 2.setIsStarted:设置线程是否处于一次双击事件判断的阻塞之中

    * 3.setDoubleSpan:设置用于判断双击的间隔时间

    */

    public class DoubleRunnable implements Runnable {

    private DoubleHandler mHandler;//处理点击事件的handler

    private boolean isStarted = false;//表示线程是否正处于阻塞中

    private boolean isPrepared = false;//表示是否已准备好启动线程

    private boolean isDoubleClicked = false;//表示是否被双击

    private int doubleSpan;//用于判断双击的间隔时间

    /**

    * 双击事件线程执行体的构造函数

    * @param handler

    * 用于处理是否双击事件的handler

    */

    public DoubleRunnable(DoubleHandler handler) {

    handler.setDoubleRunnable(this);

    this.mHandler = handler;

    }

    @Override

    public void run() {

    while (true){

    //如果没有被点击,则继续下次循环

    if (!isPrepared) {

    continue;

    }

    isPrepared = false;

    //如果线程处于一次双击事件的阻塞中,则继续下次循环,直至事件结束

    if (isStarted){

    continue;

    }

    isStarted = true;

    try {

    Thread.sleep(doubleSpan);

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    Message msg = mHandler.obtainMessage();

    msg.obj = isDoubleClicked;

    mHandler.sendMessage(msg);

    }

    }

    /**

    * 设置当前双击事件的执行状态

    * @param isPrepared

    * 是否已被点击(可以执行线程中代码)

    * @param isDoubleClicked

    * 是否已被双击

    */

    public void setPreparedState(boolean isPrepared, boolean isDoubleClicked) {

    this.isPrepared = isPrepared;

    this.isDoubleClicked = isDoubleClicked;

    }

    /**

    * 设置线程是否处于一次双击事件判断的阻塞之中

    * @param isStarted

    * 传入是否阻塞开启

    */

    public void setIsStarted(boolean isStarted){

    this.isStarted = isStarted;

    }

    /**

    * 设置用于判断双击的间隔时间

    * @param doubleSpan

    * 传入的时间间隔

    */

    public void setDoubleSpan(int doubleSpan){

    this.doubleSpan = doubleSpan;

    }

    }

    4.最后创建一个双击事件管理器,进行线程的创建管理,并用于启动线程和更新用户的点击时间,之所以在管理器中更新时间并进行判断,是因为可以随时根据用户的点击去更新DoubleRunnable中的双击判断结果,如果在DoubleRunnable中进行时间判断,则会因为判断只会在下一次阻塞循环结束之后才能进行,导致一直是单击事件执行。

    /**

    * Created by 明月春秋 on 2017/11/18.

    * 双击事件的管理器

    * 方法:

    * 1.start:开启双击事件的线程执行

    */

    public class DoubleManager {

    private DoubleRunnable mDoubleRunnable = null;//负责双击事件的线程执行体

    private Thread mThread = null;//负责双击事件的线程

    private long mClickTime = 0;//记录点击时间

    private static final int DOUBLE_SPAN = 300;//用于判断双击的间隔时间

    /**

    * 双击事件管理器的构造函数

    * @param doubleRunnable

    * 传入负责双击事件的线程执行体

    */

    public DoubleManager(DoubleRunnable doubleRunnable){

    if (doubleRunnable == null){

    return;

    }

    if (mDoubleRunnable == null){

    doubleRunnable.setDoubleSpan(DOUBLE_SPAN);

    this.mDoubleRunnable = doubleRunnable;

    }

    }

    /**

    * 开启双击事件的线程执行

    */

    public void start(){

    if (mDoubleRunnable == null){

    return;

    }

    boolean isDoubleClicked = false;

    if ((System.currentTimeMillis() - mClickTime) < DOUBLE_SPAN) {

    isDoubleClicked = true;

    }

    else {

    isDoubleClicked = false;

    mClickTime = System.currentTimeMillis();

    }

    mDoubleRunnable.setPreparedState(true, isDoubleClicked);

    if (mThread == null){

    mThread = new Thread(mDoubleRunnable);

    mThread.start();

    }

    }

    }

    5.接下来就可以在任意控件的单击事件监听器中或按键事件中,进行双击事件的判断了。

    public class DoubleClick extends AppCompatActivity {

    private DoubleManager doubleManager = null;

    private DoubleManager keyDoubleManager = null;

    @Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.button_double_click);

    }

    public void doubleClick(View view){

    if (doubleManager == null){

    doubleManager = new DoubleManager(new DoubleRunnable(new DoubleHandler(new OnDoubleClickListener() {

    @Override

    public void onSinglePress() {

    Toast.makeText(DoubleClick.this, "单击", Toast.LENGTH_SHORT).show();

    }

    @Override

    public void onDoublePress() {

    Toast.makeText(DoubleClick.this, "双击", Toast.LENGTH_SHORT).show();

    }

    })));

    }

    doubleManager.start();

    }

    @Override

    public boolean onKeyDown(int keyCode, KeyEvent event) {

    if (keyCode == KeyEvent.KEYCODE_ENTER){

    if (keyDoubleManager == null){

    keyDoubleManager = new DoubleManager(new DoubleRunnable(new DoubleHandler(new OnDoubleClickListener() {

    @Override

    public void onSinglePress() {

    Toast.makeText(DoubleClick.this, "按键单击", Toast.LENGTH_SHORT).show();

    }

    @Override

    public void onDoublePress() {

    Toast.makeText(DoubleClick.this, "按键双击", Toast.LENGTH_SHORT).show();

    }

    })));

    }

    keyDoubleManager.start();

    }

    return super.onKeyDown(keyCode, event);

    }

    }

    运行例子中按键事件时,记得将Button在布局中设为android:visibility="gone",防止按键事件直接点击到按钮上,执行按钮的双击事件监听了。

    三、运行效果图

    1.执行按钮单击

    eeee2f5edc03bafcbbaf7c946222915d.png

    2.执行按钮双击

    29998668ca7ed3f8e6d1dafe15a859d3.png

    3.执行按键单击

    62c840bbb340c8bc863a0001829b8f37.png

    4.执行按键双击

    2a6704188e6e776a1f91c3159174ffbf.png

    四、总结 到此,Android任意控件或按键的双击事件监听就已经全部实现了。只要前面将准备工作做好,就可以随意在任何代码处添加双击事件管理器并执行了,不会对原有代码产生任何影响,如果对本文有什么意见和问题欢迎指正,如果觉得本文可以,请帮忙点个赞,谢谢观看。

    展开全文
  • 那么直接的双击事件 就没有 1. 想到双击 肯定会有童鞋想到 jquery的 dblclick 事件 但问题是在移动端就不生效 那这个怎么办么 首先就是可以通过模拟来实现 正常来说 只要第二次点击 和第一次点击的时间小于 300ms...

    主要是移动端 双击会被看成是放大页面,而这个功能 做过h5的童鞋肯定知道 其实移动端是禁止放大 

    那么直接的双击事件 就没有

    1. 想到双击 肯定会有童鞋想到  jquery的 dblclick 事件  但问题是在移动端就不生效 那这个怎么办么

    首先就是可以通过模拟来实现 

    正常来说 只要第二次点击 和第一次点击的时间小于 300ms 就可以 看成是双击 那么就可以判断两次点击的 时间差 来实现了

    通过setTimeout 来模拟实现了  这样的话可能会有延迟哈 

    // 点击事件
            var clickid = 1;
            var timer = null;
            function a() {
                console.log('点击');
            }
            function b() {
                console.log('双击');
            }
            
            $('div').click(function() {
                if(clickid == 1) {
                    startTime = new Date().getTime();
                    clickid++;
                    timer = setTimeout(function () {
                        a(); // 单击事件触发
                        clickid = 1;
                    }, 300)
                }
    
                if(clickid == 2) {
                    clickid ++ ;
                } else {
                    var endTime = new Date().getTime();
                    if ((endTime - startTime) < 300) {
                        b(); // 双击事件
                        clickid = 1;
                        clearTimeout(timer);
                    }
                }
            })

    我们看下实际效果哈

     

    2. 第二种就可简单了 就是通过zepto 的 双击 事件 来快速 实现了

    <script src="../js/zepto.js"></script>
        <script src="../js/event.js"></script>
        <script src="../js/touch.js"></script>
    $('div').on('doubleTap', function() {
                console.log('双击');
            })
            $('div').on('tap', function () {
                console.log('单击');
            })

    总结来说吧   

    模拟的 有点延迟  效果肯定没有zepto的好  毕竟 touch 和 click 之间本来就有不小的延迟差

    看你自己选择了     没必要为了一次双击就引入一个库  个人感觉 看你自己实际项目需要了 

    关注我 持续更新前端知识 

    展开全文
  • elementUI官方只提供了单击事件,而开发中很多时候需要双击事件来做一些操作,看了一下能搜索到的文章,感觉写的都缺少一些东西,所以自己实现了一个双击事件 <el-tree @node-click="nodeClick" > </el-...

    elementUI官方只提供了单击事件,而开发中很多时候需要双击事件来做一些操作,看了一下能搜索到的文章,感觉写的都缺少一些东西,所以自己实现了一个双击事件

    <el-tree
     @node-click="nodeClick"
    >
    </el-tree>
    export default {
      data() {
        return {
          treeClickCnt: 0,
          treeClickTimeout: null,
          treeClickId: '',
        };
      },
      methods: {
        // 树形菜单点击事件
        nodeClick(data) {
          // 如果点击的id不相同,则重置点击次数
          if (data.id != this.treeClickId) {
            this.treeClickCnt = 0;
          }
          this.treeClickId = data.id;
          this.treeClickCnt++;
    
          // 注册清空点击次数计时器任务
          window.clearTimeout(this.treeClickTimeout);
          this.treeClickTimeout = window.setTimeout(() => {
            this.treeClickCnt = 0;
          }, 300);
    
          // 连续点击多次则不做任何事情
          if (this.treeClickCnt > 2) return;
          // 点击一次时单击事件
          if (this.treeClickCnt == 1) {
            // 单击事件
            console.log('单击');
          }
          // 点击两次时双击事件
          if (this.treeClickCnt == 2) {
            // 双击事件
            console.log('双击');
          }
        }
      },
    };

    也可以创建一个新的基础组件,用来中转el-tree自有的所有事件、函数、方法、属性,然后在当前组件上添加此双击事件,然后在逻辑组件中直接调用此基础组件,可以直接实现此基础组件的双击事件。事件和属性等的中转可以用v-on="$listeners"v-bind="$attrs"实现

    展开全文
  • // 根据TouchEventCountThread统计到的点击次数, perform单击还是双击事件 TouchEventHandler mTouchEventHandler = new TouchEventHandler(); @Override public boolean onTouchEvent(MotionEvent event) { switch...
  • $('#getzxsjsz').bootstrapTable({url : '../ajaxjsp/zxsjsz_json.jsp?type=getzxsjsz', // 请求后台的URL(*)toolbar : '#toolbar', // 工具按钮用哪个容器striped : true, // 是否显示行间隔色cache : false, // ...
  • 爱学习的小伙伴们,可能都学习过java,但是你知道java鼠标双击事件是怎么实现的吗?不知道的话跟着小编一起来学习了解java鼠标双击事件吧。java鼠标双击事件实例介绍public class MyMouseListenerextends java.awt....
  • Java鼠标双击事件

    2021-03-04 06:04:23
    package c;import java.awt.BorderLayout;public class a extends JFrame {private JPanel contentPane;private boolean isOn=false;//判断鼠标是否按过private JButton button;/*** Launch the application.*/...
  • import java.awt.*;import java.awt.event.*;import javax.swing.*;import ...import java.util.Date;public class Frame1extends JFrame {JPanel contentPane;BorderLayout borderLayout1 =...
  • 一下代码可以解决单击事件和双击事件冲突的问题 //单击事件 var timeoutID = null; $("#test).on('click',function(e){ clearTimeout(timeoutID); timeoutID = window.setTimeout(function (){ //写单击事件要干...
  • 最近在学习linux内核定时器,所以用类似定时器的方法实现按钮的双击事件public class MainActivity extends Activity {private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) ...
  • 变单击为双击事件,用户按ESC键,取消更改。//为每个Td添加双击事件function ReWritable(){var tbmian=document.getElementById("tbmain");//循环,为每行每列添加双击事件,但是,第一行(thead)与最后一行(tfoot)不...
  • Vue的双击事件

    2021-06-10 21:51:13
    我这绑定的双击事件和单击事件是一样的 <span class="custom-tree-node" slot-scope="{ node, data }" @mouseenter="mouseenter(data)" @mouseleave="mouseleave" @dblclick="handleEdit(data)" >
  • public class DoubleClickTest extends Activity { String TAG = ... } // 双击响应事件 private void doubleClick(){ Log.i(TAG, "doubleClick"); } } 缺点:用延时来确定双击,因为开了新的线程,对主线程UI操作不便
  • uni-app中绑定双击事件

    2021-09-06 09:30:08
    uni-app中绑定双击事件 功能需求 在uni-app中,很多时候我们需要元素绑定双击事件,比如自定义的视频播放器,双击播放、暂停,但是显示进度条、隐藏进度条。 但是在uni-app官方并没有提供双击事件,那么就...
  • js单击和双击事件同时存在,但是各个事件执行不同的功能。 var time = null; //单击事件 function click(){ //取消上次延时未执行的方法 clearTimeout(time); //设置延时300ms time = setTimeout(function(){ ...
  • js 实现单击、双击事件

    千次阅读 2021-03-03 11:58:17
    js 实现绑定按钮单击、双击事件: <button id="clickBtn1">单击/双击按钮1</button> <button onclick="btnClick()" ondblclick="btndbClick()">单击/双击按钮2</button> // 方法一 ...
  • 双击 tree上的子节点,把节点文字显示在输入框中(这里简化一下,双击 tree 显示文字即可,省略 $emit 那一步) 注解:props 可以接收 defaultExpandAll(是否默认展开所有节点) 效果如下: 基本代码 树组件代码...
  • Vue 事件处理方法可以用 v-on 指令监听 DOM ...v-on:click 单击事件 + + - - v-on:dblclick 双击事件 + + - - v-on:mousemove\mouseout 鼠标事件{{ x }} - {{ y }}new Vue({el:".vue-app",data:{age: 25,x:0,y:0},m...
  • 为了响应双击QLabel的事件,需要重写QWidget的mouseDoubleClickEvent方法。from PyQt4.QtGui import *from PyQt4.QtCore import *from PyQt4 import *class MyLabel(QtGui.QLabel):def __init__(self,parent=None):...
  • 判断条件:在300秒内有两次连续单击事件触发就是双击,否则就是单击 export default { data () { return { clickCount: 0, time: 0 } }, methods: { dblclick () { //使用点击次数实现,如果双击了就重置...
  • } else { // Log.e(TAG, "请在构造方法中传入一个双击回调"); } count = 0; firClick = 0; } else { firClick = secClick; count = 1; } secClick = 0; } } return true; } } 2、在相应的Activity里调用即可。 sv =...
  • 下文我们介绍两种双击事件拦截的方式1.通过Android的事件分发机制进行拦截(dispatchTouchEvent)话不多说,直接上代码:/** 判断是否是快速点击 */private static long lastClickTime;public static boolean ...
  • TextView是没有双击事件的监听设置的,故我们这里使用的是setOnTouchListener来作为双击监听。监听的类需要实现OnTouchListener类,并重写OnTouch方法下面是实例:public class HosIntroActivity extends MyActivity...
  • el-tree组件本身是不支持双击事件的,但是项目里有个需求需要双击来执行,查看官方文档可知 html代码: <el-tree class="tree" :data="nodeData" :props="defaultProps" @node-click="handleNodeClick" &...
  • jQuery的单机和双击事件 (1)单机事件 click 定义和使用: 当点击元素时,会发生 click事件。 当鼠标指针停留在元素上方,然后按下并松开鼠标左键时,就会发生一次click。 click() 方法触发click事件,或规定当...
  • js:如何实现双击事件

    2021-07-20 18:12:33
    }, 500) if (cloc == 2) { console.log("你双击了"); } } 封装成高阶函数 function doubleClick(handle, await = 1000, n = 2) { let count = 0; let timer = null; return function () { if (!timer) { timer = ...
  • data中 timer: null, onceClick() { let timers = this.timer; if (timers) { window.clearTimeout(timers); this.timer = null;... this.timer = window.setTimeout(() =>... console.log("我是单击事件");

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 122,383
精华内容 48,953
关键字:

双击事件