2014-01-20 4 views
1

Я создаю приложение JavaFX GUI, которое использует класс веб-просмотра javafx. Теперь я могу показать веб-страницу на Java. Теперь я хочу, чтобы веб-страница реагировала на различные события касания. Я уверен, что мне нужно настроить его для разных видов событий. Подобно стационарному перемещению и удалению будет действовать как щелчок, тогда как перетаскивание будет прокручиваться. На самом деле я не совсем использую сенсорный экран, но что-то подобное. Таким образом, если может быть также способ передать координаты для косвенного события явно или, возможно, создать пользовательский обработчик событий, а затем использовать его, а затем каким-то образом использовать его в веб-просмотре.Touch Events в webView - JavaFX

Я немного новичок в JavaFX и немного обработки событий, поэтому мне нужно какое-то направление.

Есть ли способ передать события psuedo-touch?

Я использую TUIO, и я могу правильно получить координаты и т. Д. У меня есть функции события TUIO, которые отвечают на их пути. Могу ли я передавать пользовательские события или изменять их для отображения событий на экране и передачи их в веб-просмотр? Потому что они на самом деле не касаются событий, но если кто-то может стать псевдо-сенсорными событиями, действующими как они, это может сработать.

ответ

1

Поскольку вы используете WebView, который является компонентом HTML, вам необходимо обработать события в WebView, а не JavaFX.

Вам нужно будет написать обработчики событий JavaScript для использования на вашей странице. Вы можете найти более подробную информацию о обработчиков событий JavaScript по следующим ссылкам:

Если вы на самом деле не с помощью сенсорного экрана, он может или не может работать (Я не знаю).

Я не знаю, понимает ли WebView события касания (я никогда не пробовал).


Есть ли способ передать псевдо-события прикосновения?

Использование Java 8. В Java 8 есть множество связанных с сенсорными классов событий, таких как TouchEvent, SwipeEvent, ZoomEvent, RotateEvent и т.д. Каждый из этих классов событий есть конструктор, вы можете использовать, чтобы построить событие код. Затем идет сложный бит, обычно то, что вы здесь делаете, определяет узел, к которому должно применяться событие, и вызывать node.fireEvent(myCreatedEvent). Однако этот шаг определения называется сборкой, для которой в JavaFX на данный момент нет открытого API. В настоящее время запрос на публичный сбор API составляет highest voted request in the JavaFX issue tracker. Таким образом, без публичного API вам нужно будет использовать закрытый недокументированный API (который, вероятно, исчезнет в будущих версиях JavaFX). Если вы хотите, вы можете найти JavaFX source, чтобы узнать, каким будет имя такого API.

Могу ли я передавать пользовательские события или изменять их для отображения событий на экране и передавать их на веб-просмотр?

Я не уверен, вы могли бы попробовать подход, описанный выше, он может работать или не работать.

Я бы рекомендовал использовать реальный сенсорный экран, который поддерживается вашей целевой ОС, а не с помощью TUIO, тогда JavaFX и WebView, вероятно, будут обрабатывать все ваши сенсорные ввода по существу, не делая ничего.

+0

Есть ли способ передать события psedo-touch? Я использую TUIO (http://www.tuio.org/), и я могу правильно получить координаты и т. Д. У меня есть функции события TUIO, которые отвечают на их пути. Могу ли я передавать пользовательские события или изменять их для отображения событий на экране и передачи их в веб-просмотр? потому что они на самом деле не касаются событий, но если кто-то может стать псевдо-сенсорными событиями, действующими как они. –

+0

Отредактировал ваш вопрос, чтобы добавить комментарий. Вы можете удалить свой комментарий. Обычно такие вопросы следует задавать как новые, но я посмотрю, смогу ли я ответить в этом контексте. – jewelsea

0

Просто наткнулся на ваш вопрос. Не знаю, действительно ли это относится к вам, но в случае, если кто-либо еще найдет это:

JavaFX WebView на самом деле не понимает TouchEvents, но вы можете справиться с ними. Чтобы передать их в браузер, JavaScript из Java через executeScript в WebEngine. В JavaScript вы можете создать TouchEvent с документом document.createEvent ('UIEvent')

С этим я, например, смог переслать TouchEvents в Листовку, запущенную внутри WebView.