如何在 GEF4 中添加非图形视觉元素

How to add Non-Graph Visual Elements in GEF4

我正在开发一个 Eclipse RCP 应用程序来对图表进行可视化建模。 为此,我使用了 GEF4 Zest JFace 库(或包)。使用的策略涵盖了很多必要的功能,但我需要添加一个额外的视觉元素:一个带有图形名称和简短描述的 VBox(或面板)。这不是图形节点,所以我将它放在 ZestContentViewer 的 Canvas 覆盖组中。

final Group canvasOverlay = ui.getGraphViewer().getFXViewer().getCanvas().getOverlayGroup();
            canvasOverlay.getChildren().add(metaPanel);

方法 ui.getGraphViewer returns ZestContentViewer 和 metaPanel 是包含 javafx TextFields 的 VBox。

一切正常,直到我在 TextFields 中写了一些东西。当我按下其中一个箭头键时,包含 canvas 的滚动窗格也会被触发(滚动)。同样,当我拖动 metaPanel 时,也会启动一个矩形选择。 有办法解决这个问题吗?我不确定这是放置组件的正确位置,但我没有任何其他想法。

如相应论坛 post 所述,您可以交换 ITargetPolicyResolver 并阻止处理已由 "meta" 面板处理的事件。