0

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

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

如果我将转换器的类型更改为 Transformer< Parental, Paint>,那么我的 VisualizationViewer< Potter, Edge> 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;
            }
        }
    };

感谢您的帮助!

最好的问候,西蒙娜

4

1 回答 1

0

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

于 2013-12-04T04:22:45.557 回答