2017-06-08 8 views
-1

Mon application javafx comporte des graphiques composés de nœuds et de bords. Les bords sont implémentés en utilisant la forme 'Line'. Un 'ContentMenu' est utilisé sur les bords lorsque l'utilisateur clique dessus avec le bouton droit de la souris. Un autre ContextMenu est utilisé avec le canevas d'interface utilisateur principal sur lequel le graphique est construit.EventFilter dans le menu contextuel dans JavaFx

Le problème est que le menu contextuel canvas est en train de remplacer le menu contextuel de bord. Chaque fois qu'un utilisateur clique avec le bouton droit sur un bord, son menu contextuel apparaît et disparaît rapidement pour afficher le menu contextuel du canevas.

J'ai écrit un EventFilter sur un clic droit sur MOUSE_RELEASED des bords pour consommer l'événement de la souris, mais cela ne résout pas non plus le problème.

+0

Veuillez créer un [MCVE] et l'inclure dans la question. –

Répondre

2

Vous avez choisi un mauvais événement. Vous devez consommer ContextMenuEvent pour supprimer le menu contextuel. Voir le code suivant

node.addEventFilter(ContextMenuEvent.ANY, new EventHandler<Event>() { 
     @Override 
     public void handle(Event event) { 
      event.consume(); 
     } 
    }); 
+0

Malheureusement, le menu contextuel canvas remplace toujours le menu contextuel Edge une fois la clé libérée. – Ulkurz

+0

@Ulkurz Dans ce cas, nous avons vraiment besoin de voir comment assigner des filtres et des gestionnaires pour trouver un problème. S'il vous plaît, essayez de préparer https://stackoverflow.com/help/mcve –

+0

merci, j'ai enfin été en mesure de le comprendre. :) – Ulkurz