Question

Je voudrais verrouiller la souris à l'intérieur d'un JFrame. Autrement dit, la souris ne peut pas laisser le contenu du JFrame (sauf si l'utilisateur clique échapper, alt-tab, ou la fenêtre desserre autrement mise au point). Idées?

Merci!

Était-ce utile?

La solution

Je ne sais pas s'il y a une façon plus automatique de le faire, mais vous pouvez utiliser le classe Robot pour régler la position de la souris. Ainsi, dans le gestionnaire d'événements lorsque les gains JFrame se concentrent, vous pouvez commencer à regarder l'événement de déplacement de la souris, et quand la souris se déplace assurez-vous qu'il reste dans le JFrame. Si elle quitte le JFrame, vous pouvez utiliser la classe Robot pour définir la position de la souris pour revenir en arrière.

Ensuite, lorsque la fenêtre perd le focus, vous pouvez annuler l'enregistrement de l'événement de déplacement de la souris.

Autres conseils

La classe Robot est idéal pour ce genre de chose, mais je suggère une autre approche.

Peut-être faire le plein écran de jeu (en maximisant le volet de la fenêtre) réaliserait ce que vous voulez à la place. La souris serait incapable de quitter la fenêtre et pas laid bidouille Robot-esque doit être utilisé pour forcer l'utilisateur à rester à l'intérieur des frontières.

Une autre solution que je viens de penser - verrouiller le curseur au centre du cadre, et le faire invisible.Then rendre un curseur logiciel où le curseur doit être réel. Vous pouvez ensuite verrouiller le curseur sur ce que la zone que vous voulez.

Voici une sournoise pourrait fonctionner si vous ne l'utilisez pas bouton de la souris 2 dans votre jeu. Utilisez un robot pour appuyer BUTTON2.

L'idée est si la souris se traîne, pas bougé. Chaque fois que vous obtenez un événement déplacé de la souris, il est parce que l'utilisateur a publié Bouton2, donc presser à nouveau.

Chaque fois que vous obtenez un événement traîné de la souris, si la souris est en dehors de la fenêtre, mettez-le.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top