определение двойной щелчок на Java
Я хочу знать, как мы можем выполнить действие, когда мышь дважды щелкнула в компоненте.
3 ответа:
public void mouseClicked(MouseEvent event) { if (event.getClickCount() == 2) { System.out.println("double clicked"); } }
Предполагая, что вы имеете в виду в Swing, назначьте MouseListener вашему компоненту:
addMouseListener(new MouseAdapter(){ @Override public void mouseClicked(MouseEvent e){ if(e.getClickCount()==2){ // your code here } } });
Ссылка:
- учебник по Java: Как написать мышь Слушатель
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); } }
Протестировано с Win Xp OS и perfect.