2010-03-30 22 views
1

我想將鼠標鎖定在JFrame中。也就是說,鼠標不能離開JFrame的內容(除非用戶點擊轉義,alt-tab,否則窗口會失去焦點)。想法?如何將鼠標鎖定在JFrame中

謝謝!

+0

也許你能解釋一下你爲什麼要這麼做。 – Turtle 2010-03-30 05:36:47

+2

爲什麼他爲什麼要這麼做? – Joel 2010-03-30 05:37:24

+0

這似乎是可怕的UI設計。人們希望能夠將鼠標移出窗口。 可能有更好的方法來實現他想要的任何東西。 – Turtle 2010-03-30 05:48:01

回答

3

我不確定是否有更自動的方式來做到這一點,但您可以使用Robot class設置鼠標位置。因此,在JFrame獲得焦點時的事件處理程序中,您可以開始觀看鼠標移動事件,並且當鼠標移動時,請確保它保留在JFrame內。如果它離開JFrame,則可以使用Robot類將鼠標的位置設置回去。

然後,當窗口失去焦點時,您可以從鼠標移動事件中取消註冊。

2

機器人類是理想的這種類型的東西,但我會建議另一種方法。或許讓遊戲全屏(最大化窗口窗格)可以實現你想要的東西。鼠標將無法退出窗口,並且不需要使用醜陋的機器人式的黑客來迫使用戶留在邊界內。

1

我剛纔想到的另一個解決方法 - 將光標鎖定到框架的中心,並使其不可見。然後將實際光標應該放在的軟件光標。 然後,您可以將光標鎖定到您想要的任何區域。

0

這是一個鬼鬼祟祟的人可以工作,如果你不在遊戲中使用鼠標按鈕2。 使用機器人按下BUTTON2。

這個想法是鼠標被拖動,而不是移動。每當你得到一個鼠標移動的事件,這是因爲用戶已經釋放button2,所以再次按下它。

每當你得到一個鼠標拖動事件,如果鼠標在窗口之外,將它放回。