2014-01-11 67 views
10

我正在開發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中?
+0

我遇到了同樣的問題,您是否在此期間找到了解決方案? –

+2

不,我不幸找到了解決方案;如果有的話,我會在這裏發佈。我不得不放棄按鈕的按住功能。我可以建議的最多的是使UI元素有問題需要拖動而不是按住,因爲拖動操作至少可以讓點擊通過。 :/ – Tustin2121

+0

謝謝。我正在使用JOGL2開發OpenGL應用程序。當我使用一個Swing窗口時,我會遇到與您一樣的有問題的鼠標行爲。但是,如果我使用NEWT窗口,它會毫無延遲地報告鼠標按鍵,所以我認爲NEWT有一種方法可以告訴操作系統無延遲地報告事件。 –

回答

1

通常,此類行爲由設備上安裝的觸摸設備驅動程序控制。我見過的所有觸控制造商都有控制面板應用程序,可以讓您自定義觸控行爲。因此,例如,您可以告訴驅動程序在收到觸摸時立即發送鼠標點擊,而不是暫時延遲,以防止發生輸入事件的偶然觸摸。