Моя проблема заключается в том, что я должен отвечать одним способом, если пользователь нажимает один раз, и другим, если они нажимают более одного раза (моя виртуальная машина Swing, кажется, способна рассчитывать до четырех нажатий, когда я нажимаю несколько раз).Когда я запустил приведенный выше пример, мне показалось, что тройной щелчок считается одним.Итак, вот мой переписать.По сути, у меня есть запланированное задание, которое ждет, пока пыль не очистится, а затем проверяет количество зарегистрированных кликов.Ожидание 400 мс, кажется, работает лучше всего для меня.
JButton jButton = new JButton("Click Me!");
jButton.addMouseListener(new MouseAdapter() {
private int eventCnt = 0;
java.util.Timer timer = new java.util.Timer("doubleClickTimer", false);
@Override
public void mouseClicked(final MouseEvent e) {
eventCnt = e.getClickCount();
if ( e.getClickCount() == 1 ) {
timer.schedule(new TimerTask() {
@Override
public void run() {
if ( eventCnt == 1 ) {
System.err.println( "You did a single click.");
} else if ( eventCnt > 1 ) {
System.err.println("you clicked " + eventCnt + " times.");
}
eventCnt = 0;
}
}, 400);
}
}
});