java鼠標雙擊事件怎么實現(xiàn)
java鼠標雙擊事件怎么實現(xiàn)
很多人都學習過java,但是你知道java鼠標雙擊事件怎么實現(xiàn)嗎,跟著學習啦小編一起學習ava鼠標雙擊事件。
java鼠標雙擊事件的實現(xiàn)方法
鼠標的單雙擊事件在很多時候?qū)ξ覀儙椭艽?但是在JAVA中卻沒有給出鼠標雙擊事件.我們可以通過事件源e.getClickCount()==2來判斷鼠標點擊次數(shù)來實現(xiàn)鼠標雙擊事件,例如:
public class MyMouseListener
extends java.awt.event.MouseAdapter ...{
public void mouseClicked(MouseEvent e) ...{
System.out.println("clicked");
int clickTimes = e.getClickCount();
if (clickTimes == 2) ...{
System.out.println("Doublc Clicked!");
}
}
}
但是這樣并沒有達到我們的要求,因為在每次觸發(fā)雙擊事件的同時會觸發(fā)單擊事件.所以我們試圖改進以上方案,不使用系統(tǒng)提供的 e.getClickCount()方法.可以考慮當?shù)谝淮螁螕羰髽说臅r候讓鼠標單擊事件延時0.2秒執(zhí)行,而在這段時間里等待第二次單擊,如果有第二次單擊,那么我們執(zhí)行雙擊事件任務,取消單擊任務;如果在這段時間沒有等到再次單擊,那么執(zhí)行單擊任務.
下面是用定時器延時單擊事件實現(xiàn)鼠標雙擊事件,單擊和雙擊事件互不影響!
public class MyMouseListener
extends java.awt.event.MouseAdapter ...{
private static boolean flag=false;//用來判斷是否已經(jīng)執(zhí)行雙擊事件
private static int clickNum=0;//用來判斷是否該執(zhí)行雙擊事件
public void mouseClicked(MouseEvent e) ...{
final MouseEvent me=e;//事件源
this.flag=false;//每次點擊鼠標初始化雙擊事件執(zhí)行標志為false
if (this.clickNum == 1) ...{//當clickNum==1時執(zhí)行雙擊事件
this.mouseDoubleClicked(me);//執(zhí)行雙擊事件
this.clickNum=0;//初始化雙擊事件執(zhí)行標志為0
this.flag=true;//雙擊事件已執(zhí)行,事件標志為true
return;
}
//定義定時器
java.util.Timer timer=new java.util.Timer();
//定時器開始執(zhí)行,延時0.2秒后確定是否執(zhí)行單擊事件
timer.schedule(new java.util.TimerTask() ...{
private int n=0;//記錄定時器執(zhí)行次數(shù)
public void run() ...{
if(MyMouseListener.flag)...{//如果雙擊事件已經(jīng)執(zhí)行,那么直接取消單擊執(zhí)行
n=0;
MyMouseListener.clickNum=0;
this.cancel();
return;
}
if (n == 1) ...{//定時器等待0.2秒后,雙擊事件仍未發(fā)生,執(zhí)行單擊事件
mouseSingleClicked(me);//執(zhí)行單擊事件
MyMouseListener.flag = true;
MyMouseListener.clickNum=0;
n=0;
this.cancel();
return;
}
clickNum++;
n++;
}
},new java.util.Date(),200);
}
/** *//**
* 鼠標單擊事件
* @param e 事件源參數(shù)
*/
public void mouseSingleClicked(MouseEvent e)...{
System.out.println("Single Clicked!");
}
/** *//**
* 鼠標雙擊事件
* @param e 事件源參數(shù)
*/
public void mouseDoubleClicked(MouseEvent e)...{
System.out.println("Doublc Clicked!");
}
}
public class MyMouseListener extends MouseAdapter {
public void mouseClicked(MouseEvent evt) {
if (evt.getClickCount() == 3) {
// 處理鼠標三擊
} else if (evt.getClickCount() == 2) {
// 處理鼠標雙擊
}
}
}
處理鼠標右鍵
public mouseClicked(MouseEvent e){
if(e.isMetaDown()){//檢測鼠標右鍵單擊
}
如何在小程序中處理鼠標中間鍵?
new MyMouseListener());
public class MyMouseListener extends MouseAdapter {
public void mouseClicked(MouseEvent evt) {
if ((evt.getModifiers() &?
InputEvent.BUTTON1_MASK) != 0) {
processLeft(evt.getPoint());
//處理鼠標左鍵單擊
}
if ((evt.getModifiers() &?
InputEvent.BUTTON2_MASK) != 0) {
processMiddle(evt.getPoint());
//處理鼠標中間鍵單擊
}
if ((evt.getModifiers() &?
InputEvent.BUTTON3_MASK) != 0) {
processRight(evt.getPoint());
//處理鼠標右鍵單擊
java鼠標雙擊事件怎么實現(xiàn)相關文章: