在画布中获取鼠标位置(java)

时间:2014-02-07 18:48:51

标签: java swing canvas position mouse

我在窗户内有画布。窗口是全屏的,但画布不是。我需要在画布内部获取鼠标位置,但不要在窗口内部。我该怎么做?

我需要每秒多次获取鼠标位置,即使鼠标没有移动,所以使用MouseMoved监听器还不够好。

有没有办法在画布中获取鼠标位置而无需调用任何鼠标滑块?

2 个答案:

答案 0 :(得分:3)

存储鼠标位置。如果它没有移动那么位置是相同的。然后使用鼠标移动的动作侦听器在更改时更新存储的鼠标位置状态。

答案 1 :(得分:1)

这里只是一个关于我如何做的简单例子。起初:

  • 获取JFrame的组件:

    Component[] components = yourJFrame.getComponents();
    
  • 获取画布(注意:如果在添加画布之前添加了一些内容,则它不会是组件0.伪代码add : button1, add:button2, add:canvas中的示例 - canvas = components [2]):

    Component canvas = components[0];
    
  • 获取鼠标的位置:

    int mouse_x=MouseInfo.getPointerInfo().getLocation().x-canvas.getLocationOnScreen().x;
    int mouse_y=MouseInfo.getPointerInfo().getLocation().y-canvas.getLocationOnScreen().y;
    

绝对不需要听众。 如果您对此有任何疑问,请随时发表评论。