2017-06-08 9 views
-1

私のjavafxアプリケーションには、ノードとエッジからなるグラフがあります。エッジは「線」形状を使用して実装されます。ユーザーが右クリックすると、エッジに「ContentMenu」が使用されます。メインUIキャンバスには、グラフが構築される別のContextMenuがあります。JavaFxのコンテキストメニューのEventFilter

問題はキャンバスのコンテキストメニューがエッジコンテキストメニューをオーバーライドしていることです。ユーザーがエッジを右クリックすると、コンテクストメニューが表示され、すばやく消えてキャンバスコンテキストメニューが表示されます。

私はマウスイベントを消費するために、マウスの右ボタンでマウスの右ボタンをクリックしてEventFilterを書いていますが、これで問題は解決しません。

+0

[MCVE]を作成して質問に含めてください。 –

答えて

2

間違ったイベントを選択しました。コンテキストメニューを表示するには、ContextMenuEventを使用する必要があります。次のコードを参照

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

残念ながら、キャンバスコンテキストメニューは、キーが解放されるとエッジコンテキストメニューを引き続きオーバーライドします。 – Ulkurz

+0

@Ulkurzこの場合、問題を見つけるためにフィルターとハンドラーをどのように割り当てるのかを本当に知る必要があります。おかげで、https://stackoverflow.com/help/mcve –

+0

を準備してください、私はついにそれを理解することができました。 :) – Ulkurz

関連する問題