2017-06-08 7 views
-1

Meine Javafx-Anwendung verfügt über Diagramme aus Knoten und Kanten. Die Kanten werden unter Verwendung der Linienform implementiert. Es gibt ein "ContentMenu", das an Kanten verwendet wird, wenn der Benutzer mit der rechten Maustaste darauf klickt. Es gibt ein anderes ContextMenu, das mit der Hauptbenutzeroberfläche verwendet wird, auf der das Diagramm erstellt wird.EventFilter im Kontextmenü in JavaFx

Das Problem besteht darin, dass das Leinwandkontextmenü das Kantenkontextmenü überschreibt. Wenn ein Benutzer mit der rechten Maustaste auf eine Kante klickt, wird sein Kontextmenü angezeigt und verschwindet dann schnell, um das Canvas-Kontextmenü anzuzeigen.

Ich habe einen EventFilter auf rechten Mausklick MOUSE_RELEASED der Kanten geschrieben, um das Mausereignis zu konsumieren, aber das löst das Problem auch nicht.

+0

Bitte erstellen Sie ein [MCVE] und fügen Sie es in die Frage ein. –

Antwort

2

Sie haben ein falsches Ereignis gewählt. Sie müssen ContextMenuEvent verbrauchen, um das Kontextmenü zu unterdrücken. Siehe nächsten Code

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

Leider überschreibt das Canvas-Kontextmenü immer noch das Kantenkontextmenü, sobald die Taste losgelassen wird. – Ulkurz

+0

@Ulkurs in diesem Fall müssen wir wirklich sehen, wie Sie Filter und Handler zuweisen, um ein Problem zu finden. Bitte versuchen Sie https://stackoverflow.com/help/mcve –

+0

Danke, ich war endlich in der Lage, es herauszufinden. :) – Ulkurz

Verwandte Themen