Подтвердить что ты не робот

Идентификация двойного щелчка в java

Я хочу знать, как мы можем выполнять действия, когда мышь дважды щелкнет в компоненте.

4b9b3361

Ответ 1

public void mouseClicked(MouseEvent event)
{
  if (event.getClickCount() == 2) {
    System.out.println("double clicked");
  }
}

Ответ 2

Предполагая, что вы имеете в виду в Swing, назначьте MouseListener вашему компоненту:

addMouseListener(new MouseAdapter(){
    @Override
    public void mouseClicked(MouseEvent e){
        if(e.getClickCount()==2){
            // your code here
        }
    }
});

Справка:

Ответ 3

Недостаточно e.getClickCount()==2, если вы хотите, чтобы ваши пользователи выполняли несколько двойных щелчков за короткую задержку. Вы ограничены конфигурацией рабочего стола. Вы можете получить его, посмотрев результат Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval");

Хорошим способом обойти эту проблему является не использование проверки getClickCount(), а использование Timer, где вы можете выбрать интервал между вашими кликами и обрабатывать сами счет (очень просто).

Соответствующий код:

boolean isAlreadyOneClick;

@Override
public void mouseClicked(MouseEvent mouseEvent) {
    if (isAlreadyOneClick) {
        System.out.println("double click");
        isAlreadyOneClick = false;
    } else {
        isAlreadyOneClick = true;
        Timer t = new Timer("doubleclickTimer", false);
        t.schedule(new TimerTask() {

            @Override
            public void run() {
                isAlreadyOneClick = false;
            }
        }, 500);
    }
}

Протестировано с ОС Windows XP и отлично.