Pregunta

Me gustaría para bloquear el ratón dentro de un JFrame. Es decir, el ratón no puede dejar el contenido del JFrame (a menos que el usuario golpea escapar, alt-tab, o de lo contrario la ventana pierde el foco). Ideas?

Gracias!

¿Fue útil?

Solución

No estoy seguro de si hay una manera más automática de hacer eso, pero se puede usar la Robot clase para ajustar la posición del ratón. Así, en el controlador de eventos para cuando las ganancias se centran JFrame se puede empezar a ver el desplazamiento del ratón, y cuando el ratón se mueve simplemente asegurarse de que permanece dentro del JFrame. Si sale el JFrame se puede utilizar la clase Robot para fijar la posición del ratón para volver.

A continuación, cuando la ventana pierde el foco, se puede anular el registro del desplazamiento del ratón.

Otros consejos

La clase del robot es ideal para este tipo de cosas, pero yo sugeriría otro enfoque.

Tal vez haciendo el juego de pantalla completa (maximizando el cristal de la ventana) podría lograr lo que desea en su lugar. El ratón no sería capaz de salir de la ventana y no hay necesidades de hackers Robot-esque feos para ser utilizado para forzar al usuario a permanecer dentro de las fronteras.

Otra solución que acaba de ocurrir - bloquear el cursor en el centro del marco, y hacer que invisible.Then rinde un cursor de software donde el cursor real debería ser. A continuación, puede bloquear el cursor a cualquier área que desee.

Aquí hay una furtiva podría funcionar si no se utiliza el botón del ratón 2 en su juego. Utilizar un robot para presionar hacia abajo BUTTON2.

La idea es por lo que el ratón se ve arrastrada, no se movió. Siempre que reciba un evento de ratón movido, es porque el usuario ha lanzado button2, así que presione hacia abajo de nuevo.

Siempre que reciba un ratón arrastró caso, si el ratón está fuera de la ventana, poner de nuevo en.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top