小编典典

Java:忽略单击双击?

java

有人能想到一种忽略Java双击附带的单击的好方法吗?

我希望每种行为都有不同的行为,例如:

  • 单击可在点击点上绘制十字准线
  • 双击选择屏幕上的对象,但应该 不是 搽点击点十字线

…有人能想到一种方法吗?某种计时器设置可能是?一个想法赞赏:-)

<免责声明> …而且是的,我知道我正在犯一个最令人发指的可用性/ UI伪装。

编辑2:

即使此方法有效,但由于计时器引起的延迟令人发指-我放弃了此解决方案,而是使用中键单击进行选择而不是双击…

编辑:

谢谢cgull-这是我能够想到的,因为您确认没有简单的方法可以做到这一点(请注意,如果我将计时器设置为<200,则单击和计时器之间会出现奇怪的比赛,但只要我将此值设置为>
200即可正常工作):

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();
    }
}

阅读 219

收藏
2020-11-13

共1个答案

小编典典

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

2020-11-13