当前位置:  开发笔记 > 编程语言 > 正文

Java:忽略单击双击?

如何解决《Java:忽略单击双击?》经验,为你挑选了1个好方法。

任何人都可以想到一个很好的方法来忽略在Java中双击所带来的单击?

我希望每个人都有不同的行为:

单击点击点击点上的十字准线

双击选择屏幕上的对象,但应该不会对点击的位置画十字线

......谁能想到办法做到这一点?某种计时器设置可能吗?一个想法赞赏:-)

<免责声明> ......是的,我知道我犯了一个最令人发指的可用性/用户界面失礼.

编辑#2:

虽然这可以解决由于计时器导致的延迟 - 但我放弃了这个解决方案,并使用中键单击进行选择而不是双击...

编辑:

谢谢cgull - 这是我能够想出的,因为你确认没有简单的方法可以做到这一点(请注意,如果我设置计时器<200奇数赛车在点击和计时器之间看到,但只要我将此值设置为> 200个工作只是peachy):

public void mouseClicked(MouseEvent e) {
    System.out.println( "Click at (" + e.getX() + ":" + e.getY() + ")" );
    if (e.getClickCount() == 2) {  
        System.out.println( "  and it's a double click!");
        wasDoubleClick = true;
    }else{
        Integer timerinterval = (Integer) 
          Toolkit.getDefaultToolkit().getDesktopProperty(
                      "awt.multiClickInterval");
        timer = new Timer(timerinterval.intValue(), new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                if (wasDoubleClick) {
                    wasDoubleClick = false; // reset flag
                } else {
                    System.out.println( "  and it's a simple click!");
                }
            }    
        });
        timer.setRepeats(false);
        timer.start();
    }
}

cgull.. 16

实际上,您需要在MouseAdapter的重写mouseClicked()方法中设置一个Timer,以检测两次点击之间的时间间隔.可以通过查询找到以ms为单位的默认时间间隔 Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval").如果在计时器到期之前检测到另一次鼠标单击,则双击,否则计时器到期后,您可以单击一次.



1> cgull..:

实际上,您需要在MouseAdapter的重写mouseClicked()方法中设置一个Timer,以检测两次点击之间的时间间隔.可以通过查询找到以ms为单位的默认时间间隔 Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval").如果在计时器到期之前检测到另一次鼠标单击,则双击,否则计时器到期后,您可以单击一次.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有