我有一个图表< 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&lt; Parental,Paint&gt;,然后是我的VisualizationViewer&lt; Potter,Edge&gt; 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;
}
}
};
感谢您的帮助!
祝你好运, 西蒙
答案 0 :(得分:0)
它需要是Edge-Paint Transformer。在transform方法中,使用instanceof check来查看要返回的颜色。