繁体   English   中英

预熔。 将鼠标悬停在节点上时,如何更改连接边的可视化效果?

[英]Prefuse. When hovering over a node, how can I change the connected edges' visualization?

当鼠标悬停在上面时,我使用这个典型的代码段(来自预示例)来更改节点之一的颜色:

ColorAction nFill = new ColorAction(NODES, VisualItem.FILLCOLOR);
nFill.setDefaultColor(ColorLib.gray(255));
nFill.add("_hover", ColorLib.gray(200));

我也想将此节点的出入边缘的颜色设置为不同的颜色,最好将ins的颜色设置为与outs的颜色不同,但是我找不到合适的谓词。

我正在使用有向图,以防万一。

有没有一种方法可以遍历谓词API中当前节点/边的子级/父级? 您对我的实际问题有解决方案吗?

我找到了一种无需谓词的方法,但是通过创建自己的ColorAction子类:

class ConnectedEdgeColorAction extends ColorAction {

    final int outgoing = ColorLib.rgb(255, 100, 100);
    final int incoming = ColorLib.rgb(100, 255, 100);
    final int none = ColorLib.gray(100);

    public ConnectedEdgeColorAction(String group, String field) {
        super(group, field);
    }

    @Override
    public int getColor(VisualItem item) {
        if (item instanceof EdgeItem) {
            if (((EdgeItem) item).getSourceItem().isHover()) {
                return outgoing;
            } else if (((EdgeItem) item).getTargetItem().isHover()) {
                return incoming;
            }
        }

        return none;
    }

}

然后,将其用作边缘的主要颜色操作:

ColorAction nEdges = new ConnectedEdgeColorAction(EDGES, VisualItem.STROKECOLOR);

我不知道这是否是“首选”方式,但对我来说效果很好。

另一个解决方案可以遵循

  • 创建动作的子类
  • 在带有谓词_hover的节点上调用此Action
  • 在“动作”子类中,转到输入和输出边缘并设置其颜色

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM