0

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

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.

有谁知道为什么我不能在小程序中使用该代码?如何更改安全管理器以使其正常工作?

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

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

它通过使用KeyListenerMouseListenerMouseMotionListener等相对工作ActionListener,但问题MouseMotion是如果鼠标保持不动,它就无法检测到鼠标的位置。

4

1 回答 1

1

小程序不是普通的应用程序。请参阅Java 教程中的文档What Applets Can and Cannot Do。我建议您在游戏中使用MouseMotionListener.

只需将最后一个已知位置保存在一个变量中,这样您就可以在用户不移动鼠标时检测到该位置。

如果您希望您的小程序表现得更像一个适当的应用程序,您将需要对其进行签名:请参阅Java 教程中的富 Internet 应用程序中的安全性。

于 2012-08-23T02:46:37.837 回答