我寫了一個應用程序,您可以在左右拖動一些時間軸。 當我拖動我知道這是一個mouseDragged事件。由於我將鼠標光標移到組件外面,它會停止拖動,但我不想那樣做。鼠標退出時鎖定事件java
所以我想以某種方式鎖定該組件上的mouseDragged事件,但如果我將光標移到組件外,我不再獲取mouseDragged事件。
我該如何解決這個問題?我的同事告訴我存在一些像captureMouse這樣的函數。
我寫了一個應用程序,您可以在左右拖動一些時間軸。 當我拖動我知道這是一個mouseDragged事件。由於我將鼠標光標移到組件外面,它會停止拖動,但我不想那樣做。鼠標退出時鎖定事件java
所以我想以某種方式鎖定該組件上的mouseDragged事件,但如果我將光標移到組件外,我不再獲取mouseDragged事件。
我該如何解決這個問題?我的同事告訴我存在一些像captureMouse這樣的函數。
我不認爲捕獲鼠標是個好主意。我也不認爲這是必要的,你想要的。
根據我的經驗,即使將鼠標移動到組件區域外,mouseDragged()事件也能正常工作:它將繼續報告組件內X和Y位置與組件外最接近鼠標位置的位置,但它不會終止鼠標拖動,就像你釋放了左鍵。
如果您的應用程序的行爲不同,也許您的鼠標處理有不同的錯誤?
例如,嘗試一下小程序中途下此頁:你會看到,你可以開始拖動矩形和移動你的鼠標在applet區域之外,並且將繼續努力: http://www.dgp.toronto.edu/~mjmcguff/learn/java/04-mouseInput/
(我不知道上面的代碼的作者,它只是我第一次發現與搜索Java小程序中的一個的mouseDragged)
'時間線'的哪個部分是接收mouseDragged()事件的實際組件?通常,在接收到此事件時,您將移動組件以匹配拖動動作 - 這樣,組件應始終位於鼠標下並始終接收mouseDragged()事件,直到您放開它。在處理事件時是否移動此組件?用作滑塊的小型按鈕式矩形將成爲一個優秀的組件。
(如果你試圖把你的整個時間表作爲組件,因此不會動它來搭配,你想要什麼,如果用戶拖動鼠標而在外面發生什麼呢?)
雖然Windows(和可能還有其他的)支持捕捉鼠標,Java似乎不會。您可以提供一個自定義事件隊列,如下所示:
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener()
{
public void eventDispatched(AWTEvent e)
{
// Look for mouse messages and handle them...
}
}
, AWTEvent.MOUSE_MOTION_EVENT_MASK + AWTEvent.MOUSE_EVENT_MASK);
JComponent.setAutoScrolls(...);
我試了一下JTeagle說,但後來我意識到,愛爾蘭緩衝區是正確的,我甚至不需要使用AWTListener。 – Ivansek 2010-11-09 11:16:18