【发布时间】:2017-01-20 14:30:11
【问题描述】:
所以我在 Cruncher 的帮助下更新了我的代码,现在点击器似乎工作得更好了。然而,当 while(pressed) 循环正在运行时,没有调用其他事件,因此它一直在运行。
公共类函数实现 NativeMouseListener {
private Robot robot;
private boolean pressed = false;
private boolean skip = false;
public Function()
{
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
}
private void repeatMouse()
{
skip = true;
robot.mouseRelease(InputEvent.BUTTON1_MASK);
while (pressed)
{
System.out.println("pressed while loop " + pressed);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void nativeMouseClicked(NativeMouseEvent nativeMouseEvent) {
}
@Override
public void nativeMousePressed(NativeMouseEvent nativeMouseEvent) {
System.out.println("GG");
if (!(nativeMouseEvent.getButton() == NativeMouseEvent.BUTTON1)) {
System.out.println("Returned.");
return;
}
if (!Native.get().getData().getEnabled())
{
System.out.println("Isn't enabled.");
return;
}
pressed = true;
repeatMouse();
}
@Override
public void nativeMouseReleased(NativeMouseEvent nativeMouseEvent) {
System.out.println("released");
if (!(nativeMouseEvent.getButton() == NativeMouseEvent.BUTTON1)) {
System.out.println("Returned 2");
return;
}
if (!skip)
{
System.out.println("pressed " + pressed);
pressed = false;
System.out.println("pressed " + pressed);
} else {
skip = false;
}
}
}
知道为什么 while 循环会阻止事件被调用吗?我需要使用多线程还是一些爵士乐?
谢谢。
【问题讨论】:
-
只是一个猜测,但您可能需要在开始时发送一个鼠标向上事件,然后是一堆鼠标点击事件,并监听真正的鼠标向上事件停止。
-
@Cruncher “真实”事件?我正在使用按下和释放并设置一个布尔值。这是错的吗?
-
你能告诉我答案中提供的代码是否对你有帮助吗?
-
非常有帮助,非常感谢您的宝贵时间!