[英]Understanding Robot class in Java
我正在查看其中實現了Robot()類的代碼。 我不明白以下方法
public void mousePressed(MouseEvent e) {
System.out.println("Mouse Pressed");
writer.println(EnumCommands.PRESS_MOUSE.getAbbrev());
int button = e.getButton();
int xButton = 16;
if (button == 3) {
xButton = 4;
}
writer.println(xButton);
writer.flush();
}
這基本上是使用java套接字將MouseEvent發送到另一台PC。 有人可以解釋一下為什么xButton的值設置為16以及if語句中發生了什么嗎?
好吧,我是自從我使用機器人以來已經有一段時間了。 因此,數字16來自InputEvent: https : //github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/java/awt/event/InputEvent.java#L95-就是這樣很難將其硬編碼為16,該文檔建議使用這些BUTTONx_MASK字段( https://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html#mousePress(int) ),而本地消息來源則建議使用BUTTONx_DOWN_MASK(向上滾動幾行)。
4甚至更糟糕,因為對於按鈕2和3,源僅引用Event.ALT / META_MASK,但是Event.META_MASK最終實際上是最后為4( https://github.com/openjdk-mirror/jdk7u- jdk / blob / master / src / share / classes / java / awt / Event.java#L84 ),因此可以根據需要右鍵單擊。
MouseEvent
方法的getButton()
返回按下的按鈕的編號。 您可以在此處閱讀更多內容。
至於這段代碼中發生的事情,它似乎是要檢查是否單擊了鼠標右鍵/鼠標右鍵( 此帖子說明了哪個按鈕對應於哪個數字),如果是,則發送int值4。 如果所按下的按鈕不是右鍵單擊,則它將發送int值16。
編輯
實際上,從更多角度看,我的原始答案並非100%正確。 方法談到了此篇被用來確定哪個按鈕MouseEvent
從,不是直接的相關性來之間1 =左擊,2 =中等的點擊,3 =右鍵單擊。 我仍然認為這是基於MouseEvent
是否是右鍵單擊來做出的決定,但是正如@Henry所說,如果沒有更多上下文,我不確定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.