我正在開發Java中的Swing應用程序。該程序將在專用的Windows 7觸摸屏機器上運行,據我所知,這個程序應該是在正常運行下運行的唯一程序。Windows 7觸摸屏+ Java Swing =延遲鼠標事件
我注意到Windows 7的觸摸屏界面有這個東西,它會阻止mousedown事件。由於「點擊並按住右鍵」手勢,Windows 7將不會實際發送應用程序鼠標停止事件,直到:
- 用戶「touch ups」(擡起手指觸摸,在該點既向下和向上被髮送)
- 移動其手指(在該點的點擊成爲拖動)
- 或右點擊圓手勢超時(後約5-6秒)
簡而言之,這意味着在發送鼠標按下事件之前,按鈕不會在應用程序中顯得沮喪(並且永遠不會拖拉用快速的水龍頭完全壓抑)。但是,最近更嚴重的是,這意味着功能需要按住不會產生,而不會對普通用戶造成大量混淆。
公司在發展這一點上遠來不及轉身,並從頭開始對其他問題提供了許多觸摸庫的一個開始。 (他們要求重做整個應用程序的組件層次結構,這根本是不可行的。另外,使用鼠標事件編碼的東西必須使用觸摸事件進行重新編碼,而且我們並不需要多點觸摸。 ..)
是的,我試圖簡單地關閉觸摸並按住右鍵單擊手勢。不幸的是,這樣做只是禁用繪製一個圓圈,指示手指周圍的右擊手勢和後續右鍵點擊。它不能消除潛在的問題:延遲的鼠標停止事件最多六秒鐘。
我的問題:有沒有一種辦法:
- 理想的情況下,指示窗口我的應用程序是觸摸準備程序,從而可以立即發送關閉事件(不過,我想,還是送鼠標事件而不是觸摸事件)?看來,內置的軟鍵盤可以正常工作。我只想讓我的Java應用程序也這樣做。
- 完全禁用計算機上的延遲,但仍提供基本的觸摸功能?
- 可能像this question, which seems to be asking about the same phenomenon那樣簡單,但在Java中?
我遇到了同樣的問題,您是否在此期間找到了解決方案? –
不,我不幸找到了解決方案;如果有的話,我會在這裏發佈。我不得不放棄按鈕的按住功能。我可以建議的最多的是使UI元素有問題需要拖動而不是按住,因爲拖動操作至少可以讓點擊通過。 :/ – Tustin2121
謝謝。我正在使用JOGL2開發OpenGL應用程序。當我使用一個Swing窗口時,我會遇到與您一樣的有問題的鼠標行爲。但是,如果我使用NEWT窗口,它會毫無延遲地報告鼠標按鍵,所以我認爲NEWT有一種方法可以告訴操作系統無延遲地報告事件。 –