# 1 楼答案 假设您的意思是在Swing中,为组件指定一个鼠标侦听器: addMouseListener(new MouseAdapter(){ @Override public void mouseClicked(MouseEvent e){ if(e.getClickCount()==2){ // your code here } } }); 参考资料: Java教程:How to write a Mouse Listener
# 2 楼答案 public void mouseClicked(MouseEvent event) { if (event.getClickCount() == 2 && event.getButton() == MouseEvent.BUTTON1) { System.out.println("double clicked"); } }
# 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); } } 使用Win Xp操作系统和perfect进行测试
# 4 楼答案 我的问题是,如果用户单击一次,我必须以一种方式响应,如果他们单击多次,我必须以另一种方式响应(当我多次单击时,我的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); } } });
# 1 楼答案
假设您的意思是在Swing中,为组件指定一个鼠标侦听器:
参考资料:
# 2 楼答案
# 3 楼答案
如果希望允许用户在短时间内进行多次双击,
e.getClickCount()==2
是不够的。 您受到桌面配置的限制。 您可以通过查看Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval");
的结果来获得它绕过此问题的一个好方法不是使用
getClickCount()
检查,而是使用Timer
检查,您可以选择单击之间的最大间隔,并自行处理计数(非常简单)关联的代码:
使用Win Xp操作系统和perfect进行测试
# 4 楼答案
我的问题是,如果用户单击一次,我必须以一种方式响应,如果他们单击多次,我必须以另一种方式响应(当我多次单击时,我的Swing虚拟机似乎能够计数到四次单击)。当我运行上面的示例时,似乎将三次单击视为一次单击。这是我的重写。基本上,我只是有一个预定的任务,等待灰尘清除,然后检查注册的点击次数。400毫秒的等待似乎对我最有效