【问题标题】:How to change color and stroke of one type of edges如何更改一种边缘的颜色和笔触
【发布时间】:2013-12-04 19:59:04
【问题描述】:

我有一个 Graph g 其中 Edges 属于三个不同的类,它们扩展了 Edge 类(我用它来表示不同类型的交互,比如开始相关、询问建议等等......)。我想根据它们所代表的内容为边缘着色,例如让所有父母边缘变为绿色而不显示箭头。我有这个变压器来改变颜色,但它似乎改变了所有边缘的颜色:

Transformer<Edge, Paint> parental_color_yes = new Transformer<Edge, Paint>() {
        @Override
        public Paint transform(Edge s) {
            return Color.GREEN;
        }
    };

如果我将转换器的类型更改为 Transformer,那么我的 VisualizationViewer vv 抱怨不能接受这样的转换器...我应该添加一个新的可视化查看器吗?还是变压器有问题?

回复后编辑:

 parental_color_yes = new Transformer<Edge, Paint>() {
        @Override
        public Paint transform(Edge s) {
            if (s instanceof Parental){
                return Color.GREEN;
            } else if (s instanceof Innovation) {
                return Color.RED;
            } else {
                return Color.BLACK;
            }
        }
    };

感谢您的帮助!

最好的问候, 西蒙娜

【问题讨论】:

    标签: java jung transformer jung2


    【解决方案1】:

    它需要是一个 Edge-Paint Transformer。在 transform 方法中,使用 instanceof 检查返回什么颜色。

    【讨论】:

    • 谢谢,我刚刚编辑了问题以添加您的答案...只是最后一个提示,我应该在哪里隐藏箭头或为箭头着色?
    • 为箭头着色:setArrow{Draw,Fill}PaintTransformer;要隐藏它们,请 setEdgeArrowPredicate。我建议查看 (Pluggable)RenderContext 和 PluggableRenderDemo 以了解系统功能以及如何使用它们。
    猜你喜欢
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    相关资源
    最近更新 更多