如果鼠标位于组件外部,如何在单击时获得鼠标位置?

时间:2011-08-27 04:07:25

标签: java click mouse mouse-position

我正在用Java编写一个小应用程序,每分钟点击屏幕上的十个不同位置,持续10分钟。但在点击之前我想通过点击屏幕并存储x& y在arraylist中的坐标。

我已经读过我可以通过使用MouseInfo来获取它但是我想在单击鼠标时获取坐标(可能不包括在组件上)。那怎么做呢?

我是否必须创建一个占据整个屏幕并通过这种方式获取坐标的透视组件?或者有更好的方法来解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

试试这个...

  1. 使用 MouseMoved 事件获取鼠标位置。
  2. 使用 Rectangle 类在窗口或组件中绘制 Rectangle 并存储值。
  3. MouseClicked 事件中,从鼠标移动事件中获取x和y的值,并与矩形数组进行比较。
  4. 如果值在范围之间,则执行操作。 (抱歉语法错误。)
  5. Ex:代码 mousemoved事件:

    x=event.getX();
    y=event.getY();
    

    mouseclicked事件:

    // use Event object e or event to get value of 
    x=event.getX();
    y=event.getY();
    
    // this is more easy than the mousemoved event..
    for(...) {
        if(x > rectangle[i].getMin && rectangle[i].getMax < x
                 && y > rectangle[i].getMin && rectangle[i].getMax < y)
        {
            // your action..
        }
        else
        {
    
        }
    }
    

答案 1 :(得分:0)

我决定只制作一个半透明的窗口,大小与屏幕一样(几乎看不见),并以这种方式收集鼠标位置。它似乎工作,但我希望我不必绘制额外的组件。

总结(对于那些关心的人):

  • 制作半透明窗口
  • 用户可以透过窗口查看,并可以点击他们想要的地方
  • 收集鼠标坐标
  • 窗口被丢弃

到目前为止,这似乎是我最好的选择,除非其他人很快提到一个:)