Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要一个java处理类来将鼠标移动到窗口中心_Java_Awt_Processing_Mousemove_Awtrobot - Fatal编程技术网

需要一个java处理类来将鼠标移动到窗口中心

需要一个java处理类来将鼠标移动到窗口中心,java,awt,processing,mousemove,awtrobot,Java,Awt,Processing,Mousemove,Awtrobot,我一直在使用java.awt.Robot和java.awt.Dimension处理将鼠标锁定在屏幕中央。机器人移动鼠标相对于显示器,我需要它相对于窗口。我需要一个关于如何获得窗口位置的建议,或者一个类似于机器人的类,它可以相对于窗口工作 void MouseLock() { if(mouseX != screensizex/2 || mouseY != screensizey/2) { xmovement = (mouseX - screensizex/2); Ymo

我一直在使用java.awt.Robot和java.awt.Dimension处理将鼠标锁定在屏幕中央。机器人移动鼠标相对于显示器,我需要它相对于窗口。我需要一个关于如何获得窗口位置的建议,或者一个类似于机器人的类,它可以相对于窗口工作

void MouseLock() {
  
  if(mouseX != screensizex/2 || mouseY != screensizey/2) {
    xmovement =  (mouseX - screensizex/2);
    Ymovement =  (mouseY - screensizey/2);
          try {
            Robot screenWin = new Robot();
            screenWin.mouseMove((int)screensizex/2, (int)screensizey/2);
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
}

任何在禁用鼠标离开程序的同时获取我的xmovement和ymovement的操作都将有效

您可以使用此独立于渲染器的方法获取窗口的左上角位置,并使用该位置来定位草图中心的坐标。请注意,您可能必须考虑标题栏的高度

PVector getWindowLocation() {

  PVector windowLocation = new PVector();

  switch (sketchRenderer()) {
  case P2D:
  case P3D:
    com.jogamp.nativewindow.util.Point p = new com.jogamp.nativewindow.util.Point();
    ((com.jogamp.newt.opengl.GLWindow) surface.getNative()).getLocationOnScreen(p);
    windowLocation.x = p.getX();
    windowLocation.y = p.getY();
    break;
  case FX2D:
    final processing.javafx.PSurfaceFX FXSurface = (processing.javafx.PSurfaceFX) surface;
    final javafx.scene.canvas.Canvas canvas = (javafx.scene.canvas.Canvas) FXSurface.getNative();
    final javafx.stage.Stage stage = (javafx.stage.Stage) canvas.getScene().getWindow();
    windowLocation.x = (float) stage.getX();
    windowLocation.y = (float) stage.getY();
    break;
  case JAVA2D:
    java.awt.Frame f = (java.awt.Frame) ((processing.awt.PSurfaceAWT.SmoothCanvas) surface.getNative())
        .getFrame();
    windowLocation.x = f.getX();
    windowLocation.y = f.getY();
    break;
  }

  return windowLocation;
}

可以使用此独立于渲染器的方法获取窗口的左上角位置,并使用该位置来定位草图中心的坐标。请注意,您可能必须考虑标题栏的高度

PVector getWindowLocation() {

  PVector windowLocation = new PVector();

  switch (sketchRenderer()) {
  case P2D:
  case P3D:
    com.jogamp.nativewindow.util.Point p = new com.jogamp.nativewindow.util.Point();
    ((com.jogamp.newt.opengl.GLWindow) surface.getNative()).getLocationOnScreen(p);
    windowLocation.x = p.getX();
    windowLocation.y = p.getY();
    break;
  case FX2D:
    final processing.javafx.PSurfaceFX FXSurface = (processing.javafx.PSurfaceFX) surface;
    final javafx.scene.canvas.Canvas canvas = (javafx.scene.canvas.Canvas) FXSurface.getNative();
    final javafx.stage.Stage stage = (javafx.stage.Stage) canvas.getScene().getWindow();
    windowLocation.x = (float) stage.getX();
    windowLocation.y = (float) stage.getY();
    break;
  case JAVA2D:
    java.awt.Frame f = (java.awt.Frame) ((processing.awt.PSurfaceAWT.SmoothCanvas) surface.getNative())
        .getFrame();
    windowLocation.x = f.getX();
    windowLocation.y = f.getY();
    break;
  }

  return windowLocation;
}

很漂亮,谢谢,刚刚用P3D测试过,它代表了标题栏。很漂亮,谢谢,刚刚用P3D测试过,它代表了标题栏