2014-01-20 29 views
1

我正在製作一個JavaFX GUI應用程序,它使用javafx webview類。現在我可以在Java中顯示網頁了。現在我想讓網頁響應不同的觸摸事件。我非常確定我必須爲不同類型的事件定製它,像固定移動和移除會像點擊一樣,而拖動會滾動。 其實我不是完全使用觸摸屏,但類似的東西。因此,如果還有一種方法可以通過座標來明確觸摸事件,或者可以創建一個用戶定義的事件處理程序並使用它,然後以某種方式在web視圖中使用它。在webView中觸摸事件 - JavaFX

我對JavaFX和一些事件處理有點新,所以想要一些方向。

有沒有辦法通過僞接觸事件?

我正在使用TUIO,我能夠正確接收座標等。我有TUIO事件功能以他們的方式響應。我可以傳遞自定義事件或將其更改爲觸摸屏事件並將它們傳遞給webview?因爲它們實際上不是觸摸事件,但是如果有人可以像他們那樣做僞觸摸事件,那可能會起作用。

回答

1

由於您使用的WebView是一個HTML組件,因此您需要在WebView中處理事件,而不是JavaFX。

您需要編寫JavaScript事件處理程序以供頁面使用。您可以通過以下鏈接找到關於JavaScript事件處理程序的更多信息:

如果你實際上並沒有使用觸摸屏,可能或可能無法正常工作(我不知道)。

我不知道WebView是否瞭解觸摸事件(我從來沒有嘗試過)。


有沒有辦法通過僞觸摸事件?

使用的Java 8.在Java 8有多種觸摸相關的事件類,如TouchEventSwipeEventZoomEventRotateEvent等。這些事件類的都有,你可以用來構造事件在構造函數碼。然後出現棘手的問題,通常你在這裏要做的是確定事件應該應用的節點並調用node.fireEvent(myCreatedEvent)。然而,這個確定步驟被稱爲挑選,目前JavaFX中沒有公共API。公開挑選API的請求目前是highest voted request in the JavaFX issue tracker。因此,如果沒有公共API,您將需要使用私有的未公開API(未來JavaFX版本可能會消失)。如果你願意,你可以搜索JavaFX source找出這個API的名字。

我可以通過自定義事件或將它們更改爲觸摸屏事件並將它們傳遞給Web視圖?

我不確定,你可以嘗試我上面概述的方法,它可能會也可能不會。

我建議使用目標操作系統支持的真正觸摸屏而不是使用TUIO,那麼JavaFX和WebView可能會在不需要做任何事情的情況下內在地處理所有的觸摸輸入。

+0

有沒有辦法通過psedo-touch事件?我正在使用TUIO(http://www.tuio.org/),並且能夠正確接收座標等。我有TUIO事件功能以他們的方式響應。我可以傳遞自定義事件或將其更改爲觸摸屏事件並將它們傳遞給webview?因爲它們實際上不是觸摸事件,但是如果有人能夠像他們那樣做僞觸摸事件。 –

+0

編輯您的問題以包含您的評論。你可以刪除你的評論。通常,像這樣的後續問題最好作爲新問題提出,但我會在這種情況下看看我能否回答。 – jewelsea

0

只是偶然發現你的問題。不知道它是否與你有關,但如果有人發現這一點:

JavaFX WebView並不真正瞭解TouchEvents,但你可以處理它們。 要通過WebEngine中的executeScript將它們傳遞給瀏覽器,請使用Java中的JavaScript。在JavaScript中,您可以使用document.createEvent('UIEvent')創建TouchEvent。

因此,例如,我可以將TouchEvent轉發到在WebView內運行的Leaflet。