我试图在按钮4上使用鼠标事件。使用
时返回的值int moused = MouseInfo.getNumberOfButtons();
方法是5.我无法弄清楚按钮4之外的任何按钮是否是右键;运行代码我得到这个错误:
Exception in thread "main" java.lang.IllegalArgumentException: Invalid combinati
on of button flags
at java.awt.Robot.checkButtonsArgument(Robot.java:324)
at java.awt.Robot.mousePress(Robot.java:260)
at RobotExp4.main(RobotExp4.java:23)
import java.awt.*;
import java.awt.event.KeyEvent;
public class RobotExp4{
public static void main(String [] args){
try{
Robot robot = new Robot();
System.out.println("7 Seconds after this message appears the robot will start to open a browser and make a search.");
robot.delay(7000);
robot.keyPress(KeyEvent.VK_WINDOWS);
robot.keyRelease(KeyEvent.VK_WINDOWS);
robot.delay(1000);
robot.keyPress(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_C);
robot.delay(150);
robot.keyPress(KeyEvent.VK_M);
robot.keyRelease(KeyEvent.VK_M);
robot.delay(150);
robot.keyPress(KeyEvent.VK_D);
robot.keyRelease(KeyEvent.VK_D);
robot.delay(5000);
robot.mouseMove(1340, 192);
robot.delay(200);
robot.mousePress(5);
robot.delay(75);
robot.mouseRelease(5);
}catch(AWTException e){
e.printStackTrace();
}
}
}
答案 0 :(得分:2)
您需要传递mousePress
调用InputEvent.getMaskForButton
的结果,如下所示:
int mask4 = InputEvent.getMaskForButton(4);
robot.mousePress(mask4);
robot.delay(75);
robot.mouseRelease(mask4);
您需要传递遮罩而不是按钮编号的原因是支持按钮组合:
int mask1_and_2 = InputEvent.getMaskForButton(1) | InputEvent.getMaskForButton(2);
上面的面具对应于同时按下按钮1和。
答案 1 :(得分:0)
问题在于使用释放按钮。
Robot autoPlay = new Robot();
autoPlay.setAutoDelay(500);
autoPlay.mousePress(InputEvent.BUTTON3_MASK);
autoPlay.mouseRelease(InputEvent.BUTTON3_MASK);
使用上面的代码段,您的问题就会解决。