我需要使用mouseReleased方法而不是mouseClicked所以我需要找到拦截双击的方法。这是代码:
public void mouseReleased(MouseEvent e)
{
if (e.getClickCount() == 2)
System.out.println ("Double CLICK mouseReleased");
else
{
row= clientTable.rowAtPoint(e.getPoint());
col= clientTable.columnAtPoint(e.getPoint());
clientTable.sel(row, col);
}
}
问题是,当我双击时,我也有一个单击事件。任何人都可以知道要修复它吗?感谢
答案 0 :(得分:1)
1。使用类getClickCount()
的方法MouseEvent
方法
2。这将有助于您获取点击类型 ..单人,双人,三人等。
请点击此处了解详情:
http://docs.oracle.com/javase/6/docs/api/java/awt/event/MouseEvent.html
答案 1 :(得分:0)
双击
时没有简单的修复方法就没有单击我写了一次,但它有一个缺点,你的单击有点迟钝
示例用法:
JLabel label = new JLabel("test");
label.addMouseListener(new SingleClickInhibitorMouseListener(some other mouselistener));
public class SingleClickInhibitorMouseListener implements MouseListener
{
public static final Integer CLICK_TRESHOLD = (Integer) Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval");
private Collection<MouseListener> mouseListeners = new ArrayList<MouseListener>();
public SingleClickInhibitorMouseListener( MouseListener listener )
{
mouseListeners.add(listener);
}
public void addMouseListener( MouseListener listener )
{
mouseListeners.add(listener);
}
public void removeMouseListener( MouseListener listener )
{
mouseListeners.remove(listener);
}
public void removeAllListeners()
{
mouseListeners.clear();
}
public void mouseSingleClick( MouseEvent e )
{
for (MouseListener mouseListener : mouseListeners)
{
mouseListener.mouseClicked(e);
}
}
public void mouseDoubleClick( MouseEvent e )
{
for (MouseListener mouseListener : mouseListeners)
{
mouseListener.mouseClicked(e);
}
}
public boolean hasDoubleClick = false;
public void mouseClicked( final MouseEvent me )
{
if ( me.getClickCount() == 1 )
{
new Thread(new Runnable()
{
public void run()
{
try
{
Thread.sleep(CLICK_TRESHOLD);
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
if ( hasDoubleClick )
hasDoubleClick = false;
else
mouseSingleClick(me);
}
});
}
catch (InterruptedException e)
{
mouseSingleClick(me);
hasDoubleClick = false;
}
}
}).start();
}
else
{
if ( me.getClickCount() == 2 )
hasDoubleClick = true;
mouseDoubleClick(me);
}
}
public void mousePressed( MouseEvent e )
{
for (MouseListener mouseListener : mouseListeners)
{
mouseListener.mousePressed(e);
}
}
public void mouseReleased( MouseEvent e )
{
for (MouseListener mouseListener : mouseListeners)
{
mouseListener.mouseReleased(e);
}
}
public void mouseEntered( MouseEvent e )
{
for (MouseListener mouseListener : mouseListeners)
{
mouseListener.mouseEntered(e);
}
}
public void mouseExited( MouseEvent e )
{
for (MouseListener mouseListener : mouseListeners)
{
mouseListener.mouseExited(e);
}
}
}
答案 2 :(得分:0)
public void mouseClicked(MouseEvent evt) {
if (evt.getButton()==MouseEvent.BUTTON1){
leftClick = true; clickCount = 0;
if(evt.getClickCount() == 2) doubleClick=true;
Integer timerinterval = (Integer)Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval");
timer = new Timer(timerinterval, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if(doubleClick){
System.out.println("double click.");
sb = new StringBuffer();
sb.append("Double Click");
clickCount++;
if(clickCount == 2){
rfbProto.capture();
clickCount=0;
doubleClick = false;
}
} else {
sb = new StringBuffer();
sb.append("Left Mouse");
System.out.println("single click.");
rfbProto.capture();
}
}
});
timer.setRepeats(false);
timer.start();
if(evt.getID()==MouseEvent.MOUSE_RELEASED) timer.stop();
}
}