Interaction entre navigateur et JavaFX applet

Résolu/Fermé
Utilisateur anonyme - 8 mars 2017 à 17:04
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 21 août 2017 à 16:37
Bonjour,

Depuis quelques jours je fais des recherches sur Internet pour mon problème mais toutes les solutions proposées mènent à une impasse.

Je dispose d'une application en JavaFX qui étend de Applet pour son intégration sur navigateur et celle-ci est chargée d'afficher une ligne verticale qui suit le positionnement de la souris.

Je dispose aussi d'une application web qui affiche une ligne verticale à l'aide d'une div et qui suit la position de la souris aussi.

Les deux sont séparés équitablement sur l'axe vertical (partie web en haut et applet en bas).

Je parviens à communiquer entre mon Applet et ma page. Ainsi, lorsque je déplace ma souris à l'intérieur de ma partie web, je parviens à envoyer la position de la souris à l'applet qui elle-même fait un repaint() avec la nouvelle valeur. De même, lorsque je déplace la souris dans la partie JavaFX, j'envoie la position de la souris vers le JavaScript pour déplacer la div qui affiche ma ligne.

Le problème de performance se situe ici : lorsque j'effectue un déplacement de la souris depuis le JavaFX, les deux lignes sont légèrement déphasés (négligeable). Par contre, quand je déplace ma souris depuis le côté web, le JavaFX ne suit plus (il s'actualise de moins de moins malgré la bonne réception des données).

J'ai lu que Swing de manière générale à sa manière de gérer le repaint(). S'il reçoit trop de repaint(), il peut les fusionner et donc en sauter certain. J'ai l'impression que c'est ce qu'il se passe dans mon problème mais pourquoi dans un sens ?

Je me suis penché vers la solution de l'AWTMouseMotionListener qui me permet de récupérer la position de la souris en dehors de l'application JavaFX. Cependant, l'applet refuse de se lancer à cause d'une permission non accordée : WatchMousePosition (AWTPermission).

J'ai donc signé mon archive à l'aide de la commande keytool et j'ai accordé tous les droits à mon application à l'aide d'une fusion de MANIFEST.MF avec l'option Permissions: all-permissions. J'ai modifié aussi le HTML pour lui préciser que je ne suis plus en sandbox mais en all-permissions.

Rien à faire, problème de permission quand même. J'ai réussi à contourner le problème avec un System.setProperty("java.security.policy","monapp.policy") et désormais le problème est une permission d'écriture dans ce fichier.

Je suis perdu, une solution ?
A voir également:

1 réponse

Utilisateur anonyme
21 août 2017 à 16:02
Les applets ne sont pas faites pour interagir avec l'extérieur (c'est une application indépendante Java intégrée à un navigateur).

Le problème semble provenir du navigateur car l'applet Java se redessine bien à tout instant. Le navigateur n'affiche pas correctement le rendu de l'applet si pas de focus. Ou alors un problème de repaint à cause de la manière de redessiner l'applet (réception d'un message Javascript > Java)
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
21 août 2017 à 16:37
Bonjour,

Pour info les applets sont obsolètes, elles seront officiellement deprecated en Java 9 (qui sort dans un mois) et ne sont déjà plus supportées par certains navigateurs (idem pour Flash qui va mourir aussi au profit de HTML 5).
0