2017-07-04 5 views
2

Je veux utiliser le JxBrowser dans mon application Kiosque (basé sur Swing). De par sa nature, aucune souris et clavier externes ne sont disponibles. Mais je veux recevoir un événement, si quelqu'un clique sur un bouton (HTML-) sur un site web spécifique.JxBrowser - Comment réagir sur un clic de bouton HTML dans une application Kiosque sans souris-événements

À l'origine, j'ai utilisé le mouse-listener dans la vue du navigateur pour recevoir ces événements. Sur mon Mac (avec une souris externe), j'ai reçu les événements de la souris, mais sur mon terminal (sans souris externe) je ne reçois aucun événement de souris de la vue du navigateur. Je pensais que les événements tactiles sont traités comme des événements de souris - mais malheureusement, ce n'est pas le cas.

J'ai essayé d'autres types d'événements mais sans succès. J'ai également essayé d'ajouter un JButton (transparent) à la vue du navigateur. Il était affiché en plein écran en haut de la vue du navigateur, mais sans transparence.

Existe-t-il d'autres possibilités pour recevoir un tel événement?

Répondre

1

En général, vous devez suivre ces étapes:

  1. Attendez jusqu'à ce qu'une page Web est chargée - écouter les événements de charge du navigateur: browser.addLoadListener(new YourLoadAdapter()

  2. Rechercher tous les éléments HTML cliquables sur la page (liens, boutons, ...), une utilisation simple API DOM ou l'expression XPath plus complexe:
    List<DOMElement> hyperlinks = document.findElements(By.tagName("a"));

  3. Attachez un écouteur sur chacun d'eux:
    element.addEventListener(DOMEventType.OnClick, new YourDOMEventListener());

je JxBrowser pour une application très similaire il y a quelques années, à cette époque, le JxBrowser était basé sur Mozilla. Et basé sur cette expérience, je ne suis pas un grand fan de l'intégration de navigateur Web externe dans l'application Java. Le même comportement peut être implémenté en tant qu'application ou extension Chrome standard avec moins de problèmes de maintenance et un comportement inattendu.

+0

Merci beaucoup @manicka. Cela fonctionne parfaitement et vous m'avez sauvé beaucoup de temps. – ThomasPhilipp