Я хочу знать, как мы можем выполнять действия, когда мышь дважды щелкнет в компоненте.
Идентификация двойного щелчка в java
Ответ 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
}
}
});
Справка:
- Учебник по Java: Как написать мышь Слушатель
Ответ 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 и отлично.