Como faço para travar o mouse dentro de um JFrame
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!
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.