我试图用Java创建一个远程桌面访问工具(更多的是一个实验而不是真正的实验),但是我无法将点击的点转换为主屏幕上的某个位置。让我解释一下。
以下是该工具的外观示例(暂时)。 屏幕捕获窗口为1280x720,实际屏幕大小不一,如何获取鼠标所在的位置并将其更改为主屏幕上的相同位置?
e.g。如果我点击屏幕捕获窗口上的苹果徽标,它应该移动鼠标并单击主屏幕上的苹果徽标。我只是无法弄清楚如何在窗口中获取该点,并将其转换为主屏幕上的相同点!
编辑:以下是我试图做的事情:
MouseAdapter adapter = new MouseAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
PacketMoveMouse packetMoveMouse = new PacketMoveMouse(address, e.getXOnScreen(), e.getYOnScreen());
sendPacket(address, packetMoveMouse);
}
@Override
public void mousePressed(MouseEvent e) {
Point point = this.getPoint(e.getPoint());
PacketClickMouse packetClickMouse = new PacketClickMouse(address, point.getX(), point.getY(), e.getButton());
sendPacket(address, packetClickMouse);
}
private Point getPoint(Point point) {
SwingUtilities.convertPointFromScreen(point, panel);
return point;
}
};
我也试过没有改变这一点,我只是在尝试各种各样的事情。它正确移动鼠标,但错误点。
我还尝试使用一些基本数学将其转换为主屏幕上的某个点,但我认为我的逻辑存在缺陷,这是我尝试过的:
Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
int x = ((PacketMoveMouse) packet).getX();
int y = ((PacketMoveMouse) packet).getY();
double xRatio = (screenRect.getWidth() / 1280);
double yRatio = (screenRect.getHeight() / 720);
Robot robot = new Robot();
robot.mouseMove((int) ((x * xRatio)), (int) ((y * yRatio)));
这时我只是将常规点发送给客户端,然后在收到后转到相对点。客户端的显示屏目前为1280x720。
答案 0 :(得分:0)
获取鼠标CURRENT坐标
int mouseX;
int mouseY;
@Override
public void mouseMoved(MouseEvent e) {
mouseX = e.getX();
mouseY = e.getY();
}