Как мне заблокировать мышь внутри JFrame - PullRequest
1 голос
/ 30 марта 2010

Я бы хотел заблокировать мышь внутри JFrame. То есть мышь не может покинуть содержимое JFrame (если пользователь не нажмет escape, alt-tab или окно не потеряет фокус). Идеи?

Спасибо!

Ответы [ 4 ]

3 голосов
/ 30 марта 2010

Я не уверен, есть ли более автоматический способ сделать это, но вы можете использовать Класс робота , чтобы установить положение мыши. Поэтому в обработчике событий, когда JFrame получает фокус, вы можете начать наблюдать за событием перемещения мыши, а когда мышь перемещается, просто убедитесь, что она остается в пределах JFrame. Если он покидает JFrame, вы можете использовать класс Robot, чтобы установить положение мыши для возврата.

Затем, когда окно теряет фокус, вы можете отменить регистрацию по событию перемещения мыши.

2 голосов
/ 30 марта 2010

Класс Robot идеально подходит для такого типа вещей, но я бы предложил другой подход.

Возможно, сделав игру в полноэкранном режиме (развернув панель окна), вы получите то, что вам нужно. Мышь не сможет выйти из окна, и для того, чтобы заставить пользователя оставаться в пределах границ, не нужно использовать некрасивый хакерский взлом.

1 голос
/ 07 августа 2012

Еще один обходной путь, о котором я только что подумал - заблокируйте курсор в центре фрейма и сделайте его невидимым. Затем визуализируйте программный курсор там, где должен быть реальный курсор. Затем вы можете привязать курсор к любой области, которую хотите.

0 голосов
/ 02 марта 2015

Вот подлый может работать, если вы не используете кнопку мыши 2 в своей игре. Используйте робота, чтобы нажать кнопку BUTTON2.

Идея в том, что мышь перетаскивают, а не перемещают. Всякий раз, когда вы получаете событие перемещения мыши, это потому, что пользователь отпустил button2, поэтому нажмите его снова.

Всякий раз, когда вы получаете событие перетаскивания мышью, если мышь находится за пределами окна, вставьте его обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...