[英]java right double click mouse event behaves same as left double click mouse event on Mac OS X
我有一個java swing GUI,其中必須執行雙擊和單擊的特定操作。 我有這個代碼
if (e.getClickCount() == 1)
{
// do something on single click
}
if (e.getClickCount() == 2)
{
// do something on double click
}
它的工作正常。 問題是此代碼對於鼠標右鍵和左鍵單擊的行為相同。 我不想對雙擊右鍵執行任何操作。 只想在單擊右鍵時顯示彈出菜單。
任何身體請指導我。 謝謝
您必須在MouseEvent對象(變量“e”)中檢查導致事件的按鈕:
if(e.getClickCount() == 2){ // two clicks, ok
if((e.getModifiers() & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK){
// clicks are from BUTTON1, aka left click
// double left click, insert code here
}
}
您可以使用此代碼,其中在Swing Timer
內部檢查Double_Click
,另一個選項是使用Toolkit
(從未使用過),也許更多信息在這里
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ClickListener extends MouseAdapter implements ActionListener {
private final static int clickInterval = (Integer) Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval");
private MouseEvent lastEvent;
private Timer timer;
public ClickListener() {
this(clickInterval);
}
public ClickListener(int delay) {
timer = new Timer(delay, this);
}
@Override
public void mouseClicked(MouseEvent e) {
/*if (e.getClickCount() > 2) {
return;
}
lastEvent = e;
if (timer.isRunning()) {
timer.stop();
doubleClick(lastEvent);
} else {
timer.restart();
}*/
if (timer.isRunning() && !e.isConsumed() && e.getClickCount() > 1) {
System.out.println("double");
timer.stop();
} else {
timer.restart();
}
}
@Override
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() {
@Override
public void singleClick(MouseEvent e) {
System.out.println("single");
}
@Override
public void doubleClick(MouseEvent e) {
System.out.println("double");
}
});
frame.setPreferredSize(new Dimension(200, 200));
frame.pack();
frame.setVisible(true);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.