2012-08-23 29 views
0

我一直在Java Applets中使用MouseInfo類。如何在java中檢測鼠標位置

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

上面的代碼工作得很好,在一個普通的Java程序時,但在一個小程序,我得到一個

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使用的代碼? 如何更改安全管理器,以便它能正常工作?

我問這個問題的原因是我有一個很棒的applet(遊戲),除了我需要添加鼠標控件的事實外。

如果任何人有關於如何修改上述代碼或完全不同的方式來找到鼠標/鍵盤的位置的建議,將不勝感激。

它的工作原理比較使用KeyListenerMouseListenerMouseMotionListenerActionListener等,但與MouseMotion的問題是,如果鼠標保持不動,就無法檢測到鼠標的位置。

+0

我看不出如何使用MouseListener或MouseAdapter可以幫助我找到鼠標的位置,如果沒有發生任何操作。 – rockclimber

+0

請忽略我的建議。抱歉。 –

+0

@ user1618517考慮[簽署](http://java.sun.com/developer/onlineTraining/Programming/JDCBook/signed.html)你的小程序 – oldrinb

回答

1

小蘋果不是正常的應用程序。請參閱Java教程上的文檔What Applets Can and Cannot Do。我建議你用MouseMotionListener跟蹤遊戲中的鼠標光標。

只需將最後一個已知位置保存在變量中,以便在用戶不移動鼠標時檢測位置。

如果您希望applet的行爲更像一個正確的應用程序,則需要對其進行簽名:請參閱Java教程上的Security in Rich Internet Applications

+0

謝謝,會做。現在我覺得有種愚蠢:( – rockclimber