Pergunta

Gostaria de travar o mouse dentro de um JFrame.Ou seja, o mouse não pode sair do conteúdo do JFrame (a menos que o usuário pressione escape, alt-tab ou a janela perca o foco).Ideias?

Obrigado!

Foi útil?

Solução

Não tenho certeza se há uma maneira mais automática de fazer isso, mas você pode usar o Classe de robô Para definir a posição do mouse. Portanto, no manipulador de eventos para quando os ganhos do JFrame focam, você pode começar a assistir ao evento de movimentação do mouse e, quando o mouse se move, apenas certifique -se de que ele permaneça dentro do JFrame. Se sair do JFrame, você pode usar a classe Robot para definir a posição do mouse para voltar.

Então, quando a janela perde o foco, você pode se registrar no evento de movimentação do mouse.

Outras dicas

A classe Robot é ideal para esse tipo de coisa, mas eu sugeriria outra abordagem.

Talvez colocar o jogo em tela cheia (maximizando o painel da janela) conseguisse o que você deseja.O mouse não conseguiria sair da janela e nenhum hack feio do tipo robô precisaria ser usado para forçar o usuário a permanecer dentro das fronteiras.

Outra solução alternativa em que apenas pensei - trave o cursor no centro do quadro e o torne invisível. Então, tornando um cursor de software onde o verdadeiro cursor deveria estar. Você pode bloquear o cursor em qualquer área que quiser.

Aqui está um sorriso sorrateiro, se você não usar o botão do mouse 2 no seu jogo. Use um robô para pressionar o botão2.

A idéia é que o mouse seja arrastado, não movido. Sempre que você move um evento movido ao mouse, é porque o usuário lançou o Button2, então pressione -o novamente.

Sempre que você recebe um evento arrastado pelo mouse, se o mouse estiver do lado de fora da janela, coloque -o de volta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top