如何在java中检测鼠标位置

时间:2012-08-23 02:34:15

标签: java mouseevent mousemove

我在使用Java Applets中的MouseInfo类时遇到了问题。

int somex = MouseInfo.getPointerInfo().getLocation().x;         
int somey = MouseInfo.getPointerInfo().getLocation().y;`

上面的代码在普通的java程序中运行得很好,但是在applet中,我得到了一个

Exception in thread "AWT-EventQueue-1" java.security.AccessControlException: access denied (java.awt.AWTPermission watchMousePointer)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at java.awt.MouseInfo.getPointerInfo(MouseInfo.java:62)
    at Mousefollow.getCOOR(Mousefollow.java:208)
    at Mousefollow.paint(Mousefollow.java:160)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
    at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
    etc etc etc.

有谁知道为什么我不能在applet中使用该代码? 如何更改安全管理器以使其有效?

我问这个的原因是我有一个很好的小程序(游戏),除了我需要添加鼠标控件的事实。

如果有人建议如何调整上述代码,或者找到鼠标/键盘位置的完全不同的方式,我们将不胜感激。

它使用KeyListenerMouseListenerMouseMotionListenerActionListener等相对有效,但MouseMotion的问题是如果鼠标被关闭但是,它无法检测到鼠标的位置。

1 个答案:

答案 0 :(得分:1)

小程序不是正常的应用程序。请参阅Java教程中的doc What Applets Can and Cannot Do。我建议你使用MouseMotionListener在游戏中跟踪鼠标光标。

只需保存变量中的最后一个已知位置,以便在用户不移动鼠标时检测位置。

如果您希望applet的行为更像正确的应用程序,则需要对其进行签名:请参阅Java Tutorial上的Security in Rich Internet Applications