Domanda

Vorrei bloccare il mouse all'interno di un JFrame. Cioè, il mouse non può lasciare il contenuto del JFrame (a meno che l'utente preme fuga, alt-tab, o la finestra altrimenti perde messa a fuoco). Idee?

Grazie!

È stato utile?

Soluzione

Non sono sicuro se c'è un modo più automatico di farlo, ma è possibile utilizzare la classe Robot per impostare la posizione del mouse. Quindi, nel gestore di eventi per quando i guadagni JFrame concentrano si può iniziare a guardare l'evento movimento del mouse, e quando il mouse si muove solo assicurarsi che rimanga all'interno del JFrame. Se si lascia il JFrame è possibile utilizzare la classe di robot per impostare la posizione del mouse per tornare indietro.

Poi, quando la finestra non è più attivo, è possibile annullare la registrazione dall'evento spostamento del mouse.

Altri suggerimenti

La classe di robot è ideale per questo tipo di cosa, ma vorrei suggerire un altro approccio.

Forse rendendo lo schermo gioco completo (massimizzando il vetro della finestra) sarebbe ottenere quello che vuoi, invece. Il mouse sarebbe in grado di uscire dalla finestra e deve essere utilizzata per forzare l'utente a rimanere entro i confini non è un brutto Robot-esque mod.

Un'altra soluzione ho pensato di - bloccare il cursore al centro del telaio, e renderlo invisible.Then rendere un cursore software in cui il vero cursore dovrebbe essere. È quindi possibile bloccare il cursore a qualsiasi area che si desidera.

Ecco uno subdolo potrebbe funzionare se il pulsante del mouse 2 non utilizzati nel vostro gioco. Usare un robot per premere verso il basso BUTTON2.

L'idea è così il mouse viene trascinato, non mosso. Ogni volta che si ottiene un evento del mouse mosso, è perché l'utente ha rilasciato button2, quindi premerlo di nuovo.

Ogni volta che si ottiene un evento del mouse trascinato, se il mouse è fuori dalla finestra, rimetterlo in.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top