gpt4 book ai didi

java - Java 中的 mouseMove() 问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:58 26 4
gpt4 key购买 nike

我最近开始为 Leap Motion 编写代码,这是我多年前申请开发时获得的一个工具包。当公司处于测试阶段时。当时,我家人拥有的笔记本电脑(不知何故)无法运行 Leap Motion 的软件或驱动程序或我为其编写的任何代码。最近,我从学校得到了一台"new"笔记本电脑,并尝试为其编码,中提琴,它有效!嗯,主要是。我一直在尝试编写一个小程序,根据我的手指在 Leap Motion 上方的位置在屏幕上移动鼠标,但似乎只是一个小问题。尽管 Eclipse 没有显示任何错误,但具有鼠标移动功能的行不起作用,并且当我运行该程序时,除了移动鼠标之外,它工作得很好。

以防万一这可能与该问题有关,我在东芝 Portege M780 上运行 Windows 10。

这是代码:

import com.leapmotion.leap.*;
import java.awt.Dimension;
import java.awt.Robot;

class CustomListener extends Listener {

public Robot robot;

public void onConnect(Controller c) {
System.out.println("Connected.");
}

public void onFrame(Controller c) {
//System.out.println("Frame Available.");
Frame frame = c.frame();
InteractionBox box = frame.interactionBox();
for(Finger f : frame.fingers()) {
if(f.type() == Finger.Type.TYPE_INDEX) {
//Vector fingerpos = f.tipPosition();
Vector boxFingerPos = box.normalizePoint(f.tipPosition());
Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
//robot.mouseMove(Math.round(screen.width * boxFingerPos.getX()), Math.round(screen.height - boxFingerPos.getY() * screen.height));
int x = Math.round(boxFingerPos.getX()* screen.width);
int y = Math.round(screen.height - screen.height * boxFingerPos.getY());
//robot.mouseMove(x, y);
System.out.println("Fingers: " + frame.fingers().count() + ", X: " + x + ", Y: " + y);
robot.mouseMove(x, y);
}
}
}
}

public class LeapMouse {
public static void main(String[] args) {
CustomListener l = new CustomListener();
Controller c = new Controller();
c.addListener(l);
System.out.println("Press enter to quit.");
c.setPolicy(Controller.PolicyFlag.POLICY_BACKGROUND_FRAMES);
c.setPolicy(Controller.PolicyFlag.POLICY_IMAGES);
c.setPolicy(Controller.PolicyFlag.POLICY_OPTIMIZE_HMD);
try {
System.in.read();
} catch (Exception e) {
e.printStackTrace();
}
c.removeListener(l);
}
}

此后,我按照Leap Motion网站上的说明使用其代码库编译代码,并在管理命令提示符下运行该程序,但由于某种原因它无法移动鼠标。如有任何帮助,我们将不胜感激。

谢谢!

最佳答案

好吧,我设法找出我的错误在哪里。我必须删除创建机器人对象的方法并将其移至 onFrame() 方法并将其放入 try/catch 语句中。

import com.leapmotion.leap.*;
import java.awt.Dimension;
import java.awt.Robot;

class CustomListener extends Listener {

public void onConnect(Controller c) {
System.out.println("Connected.");
}

public void onFrame(Controller c) {
Frame frame = c.frame();
InteractionBox box = frame.interactionBox();
for(Finger f : frame.fingers()) {
if(f.type() == Finger.Type.TYPE_INDEX) {
Vector boxFingerPos = box.normalizePoint(f.tipPosition());
Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
int x = Math.round(boxFingerPos.getX()* screen.width);
int y = Math.round(screen.height - screen.height * boxFingerPos.getY());
try {
Robot robot = new Robot();
robot.mouseMove(x, y);
} catch (AWTException z) {
z.printStackTrace();
}
}
}
}
}

public class LeapMouse {
public static void main(String[] args) {
CustomListener l = new CustomListener();
Controller c = new Controller();
c.addListener(l);
System.out.println("Press enter to quit.");
c.setPolicy(Controller.PolicyFlag.POLICY_BACKGROUND_FRAMES);
c.setPolicy(Controller.PolicyFlag.POLICY_IMAGES);
c.setPolicy(Controller.PolicyFlag.POLICY_OPTIMIZE_HMD);
try {
System.in.read();
} catch (Exception e) {
e.printStackTrace();
}
c.removeListener(l);
}
}

关于java - Java 中的 mouseMove() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39060856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com