繁体   English   中英

设置光标在jframe中的位置

[英]Set location of cursor within jframe

我有一个使用以下代码的程序:

public void mouseMoved(MouseEvent e) {
    mousex = e.getX();
    mousey = e.getY();

    if(mousex >= 700) {
        try {
            Robot robot = new Robot();

            robot.mouseMove(0, 0);
        } catch (AWTException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

    }
    if(mousex <= 100) {
        Robot robot;
        try {
            robot = new Robot();
            robot.mouseMove(0, 0);
        } catch (AWTException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

    }
}

除了一件事情,所有的一切都工作正常。 它设置光标在屏幕上的位置,而不是jframe。 另外,当我说if(mousex> = 700)时,它也会从屏幕上获取。 我需要知道如何将其更改为jframe。 谢谢。

获取JFrame在屏幕上的位置 ,然后简单地相应地转换鼠标位置。 所有扩展Components的对象(包括JFrame)都具有getLocationOnScreen()方法。 因此,再次使用此方法,获取JFrame的位置,然后查找鼠标的相对位置,包括鼠标的位置和所需位置。

这可以用小学代数解决。

编辑
您可能希望只创建一次Robot对象,并在需要时使用该对象,而不是每次都重新创建它。

你可以得到的东西

  1. JFrame在屏幕上的位置。
  2. 一旦知道了屏幕上的位置,就可以添加(x,y)并在JFrame中获取新位置。
  3. 如果计算后的位置超过的尺寸JFrame然后设置x或y到的最大电流大小JFrame (如果共祝是完全动态的)

看起来像这样

在此处输入图片说明

在上图中, JFrame在屏幕上的位置是(50,50),这意味着JFrame内部组件的坐标变为(0,0)。 现在,在JFrame内获取鼠标在屏幕上的位置,您只需说出JFrame内的一些所需的随机坐标,然后将这些屏幕位置50添加到其中即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM