2010-03-30 8 views
1

Je voudrais verrouiller la souris dans un JFrame. C'est-à-dire que la souris ne peut pas quitter le contenu de JFrame (à moins que l'utilisateur n'échappe à l'échappement, alt-tab, ou que la fenêtre perd son focus). Des idées?Comment verrouiller la souris dans un JFrame

Merci!

+0

Peut-être pourriez-vous expliquer pourquoi vous voulez faire. – Turtle

+2

Pourquoi est-ce important de savoir pourquoi il veut le faire? – Joel

+0

Il semble que la conception de l'interface utilisateur horrible. Les gens s'attendent à pouvoir déplacer la souris par la fenêtre. Il pourrait y avoir un meilleur moyen d'accomplir ce qu'il veut. – Turtle

Répondre

3

Je ne suis pas sûr s'il existe une manière plus automatique de le faire, mais vous pouvez utiliser le Robot class pour définir la position de la souris. Ainsi, dans le gestionnaire d'événements lorsque le JFrame est activé, vous pouvez commencer à regarder l'événement de déplacement de la souris, et lorsque la souris se déplace, assurez-vous qu'elle reste dans le JFrame. S'il quitte le JFrame, vous pouvez utiliser la classe Robot pour définir la position de la souris pour revenir en arrière. Puis, lorsque la fenêtre perd le focus, vous pouvez annuler l'enregistrement de l'événement de déplacement de la souris.

2

La classe Robot est idéale pour ce genre de choses, mais je proposerais une autre approche. Peut-être que faire le jeu en plein écran (en maximisant le volet de la fenêtre) permettrait d'atteindre ce que vous voulez à la place. La souris ne pourrait pas sortir de la fenêtre et aucun bidouillage Robot-esque laid ne devrait être utilisé pour forcer l'utilisateur à rester dans les limites.

1

Une autre solution de contournement que je viens de penser - verrouiller le curseur au centre du cadre, et le rendre invisible.Ensuite, rendre un curseur logiciel où le curseur réel devrait être. Vous pouvez ensuite verrouiller le curseur sur la zone souhaitée.

0

Voici un sournois qui pourrait fonctionner si vous n'utilisez pas le bouton 2 de la souris dans votre jeu. Utilisez un robot pour appuyer sur BUTTON2.

L'idée est que la souris soit déplacée, non déplacée. Chaque fois que vous obtenez un événement déplacé par la souris, c'est parce que l'utilisateur a relâché button2, alors appuyez à nouveau sur le bouton.

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

Questions connexes