0

MouseInfoJava アプレットでクラスを使用する際に問題が発生しています。

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.

アプレットでそのコードを使用できない理由を誰か知っていますか? これが機能するようにセキュリティ マネージャを変更するにはどうすればよいですか?

私がこれを尋ねる理由は、マウス コントロールを追加する必要があるという事実を除いて、うまく機能する大きなアプレット (ゲーム) を持っているからです。

上記のコードを適応させる方法、またはマウス/キーボードの位置を見つけるためのまったく異なる方法について誰かが提案を持っている場合は、それをいただければ幸いです。

KeyListenerMouseListenerMouseMotionListener、などを使用して比較的動作しますが、マウスを動かさないとマウスの位置を検出できないというActionListener問題があります。MouseMotion

4

1 に答える 1

1

アプレットは通常のアプリケーションではありません。Java チュートリアルのドキュメントWhat Applets Can and Cannot Doを参照してください。ゲーム内のマウスカーソルを で追跡することをお勧めしますMouseMotionListener

ユーザーがマウスを動かしていないときの位置を検出できるように、最後の既知の位置を変数に保存するだけです。

アプレットをより適切なアプリケーションのように動作させたい場合は、署名する必要があります。 Java チュートリアルのリッチ インターネット アプリケーションのセキュリティを参照してください。

于 2012-08-23T02:46:37.837 に答える