Swing中如何比较好的判断双击

Swing中如何比较好的判断双击
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.MouseAdapter;
import java.awt.MouseEvent;
public class MyMouseClickListener extends MouseAdapter implements MouseListener{
    // 取得当前操作系统的双击时间长度参数
    private final static int MULTI_CLICK_INTERVAL = Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval");
    private MouseEvent lastEvent;
    private Timer timer;

    public MyMouseClickListener(){
        this(MULTI_CLICK_INTERVAL);
    }

    public MyMouseClickListener(int delay){
        // 初始化一个计数器。这个计数器在启动以后,经过delay长的时间,自动停止。
this.timer = new Timer(delay,this); } @override public void mouseClicked(MouseEvent e){ if(e.getClickCount > 2){ return; } lastEvent = e; if(timer.isRunning()){ //
timer.stop(); doubleClicked(lastEvent); }else{
timer.restart();
} }
/*
* 单击以后的处理,自行覆盖
*/
public void singleClicked(MouseEvent e){ }
/*
* 双击以后的处理,自行覆盖编写
*/
public void doubleClicked(MouseEvent e){ } @override public void actionPerformed(ActionEvent e){
timer.stop(); singleClicked(lastEvent); } }
Swing中如何比较好的判断双击

上面监听器的核心原理:双击以后,双击中的第一下点击会启动timer,这时候timer开始计时,因为timer在经过指定时间delay以后进入停止状态,所以当第二下点击到来的时候,判断timer是否isRunning(),就能够知道这两次点击的时间间隔是否满足
当前操作系统的设置。如果timer.isRunning() == true,说明是合法双击,这时调用doubleClicked()方法,如果timer.isRunning == false说明两次点击时间间隔已经超过系统承认的时间间隔,将第二次点击作为下一轮判断的第一次点击。

Swing中如何比较好的判断双击,布布扣,bubuko.com

Swing中如何比较好的判断双击

上一篇:关于window.location


下一篇:【grunt第三弹】grunt在前端实际项目中的应用