有时它会打印出“并且只需单击一次!” 2次 。它应该打印出“,这是双击!”)。
那是正常的。仅当您在指定的时间间隔内单击两次时,才会发生双击。因此,有时如果单击速度不够快,您将连续获得两次单击。
Integer timerinterval = (Integer) Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval");上面的代码行确定双击必须有多快。
对于这里的价值,我曾经使用过一些代码来做同样的事情。不知道它是否比您拥有的代码更好或更糟:
import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class ClickListener extends MouseAdapter implements ActionListener{ private final static int clickInterval = (Integer)Toolkit.getDefaultToolkit(). getDesktopProperty("awt.multiClickInterval"); MouseEvent lastEvent; Timer timer; public ClickListener() { this(clickInterval); } public ClickListener(int delay) { timer = new Timer( delay, this); } public void mouseClicked (MouseEvent e) { if (e.getClickCount() > 2) return; lastEvent = e; if (timer.isRunning()) { timer.stop(); doubleClick( lastEvent ); } else { timer.restart(); } } public void actionPerformed(ActionEvent e) { timer.stop(); singleClick( lastEvent ); } public void singleClick(MouseEvent e) {} public void doubleClick(MouseEvent e) {} public static void main(String[] args) { Jframe frame = new Jframe( "Double Click Test" ); frame.setDefaultCloseOperation( Jframe.EXIT_ON_CLOSE ); frame.addMouseListener( new ClickListener() { public void singleClick(MouseEvent e) { System.out.println("single"); } public void doubleClick(MouseEvent e) { System.out.println("double"); } }); frame.setSize(200, 200); frame.setVisible(true); }}


