目前,为了模拟我的应用程序中的鼠标点击,我使用了Java的Robot类。它似乎使用桌面作为边界/网格来了解Point在屏幕上的位置。
示例:
<div id="dialog-addResource" title="Add Resource" style="display:none">
<span>Add Resource: </span>
<input type="text" id="resourceFile" name="file" />
<input type="hidden" id="resource_id" name="resource_id" />
<input type="hidden" name="page_id" value="{{ id }}" />
</div>
目标:
机器人强制使用我的鼠标/光标,我希望能够在我的计算机上执行其他操作,而此代码只运行我编程的Java应用程序。
有没有办法用JNA做到这一点?我不关心支持Windows之外的任何操作系统,但由于传统技术,仍然需要成为Java应用程序。
答案 0 :(得分:2)
以下代码点击target
组件(x,y)相对于target
。
private static void click(Component target, int x, int y)
{
MouseEvent press, release, click;
Point point;
long time;
point = new Point(x, y);
SwingUtilities.convertPointToScreen(point, target);
time = System.currentTimeMillis();
press = new MouseEvent(target, MouseEvent.MOUSE_PRESSED, time, 0, x, y, point.x, point.y, 1, false, MouseEvent.BUTTON1);
release = new MouseEvent(target, MouseEvent.MOUSE_RELEASED, time, 0, x, y, point.x, point.y, 1, false, MouseEvent.BUTTON1);
click = new MouseEvent(target, MouseEvent.MOUSE_CLICKED, time, 0, x, y, point.x, point.y, 1, false, MouseEvent.BUTTON1);
target.dispatchEvent(press);
target.dispatchEvent(release);
target.dispatchEvent(click);
}