Repast:为不同的边缘设置不同的颜色
Repast: set different color for different edges
我的供应链模型中有两种边:demand_links 和 supply_links。
所有链接的默认颜色都是灰色。但是我想在每次更改 demand_link 的属性时将 demand_links 的颜色更改为红色(注意:边缘是通过边缘创建者自定义边缘代理)。如何做到这一点?
下面是我的简单测试代码,但没有用。
public class EdgeStyle2D extends DefaultStyleOGL2D {
@Override
public Color getColor(Object o){
// if (((CustomEdge) o).getCurrent_dl() == 1) {
// return Color.RED;
// }
// else {
// return Color.BLACK;
// }
if (o instanceof Distributor)
return Color.YELLOW;
return null;
}
}
初始化时出现错误。
Caused by: java.lang.ClassCastException: class supplyChainSystem.EdgeStyle2D cannot be cast to class repast.simphony.visualizationOGL2D.EdgeStyleOGL2D (supplyChainSystem.EdgeStyle2D and repast.simphony.visualizationOGL2D.EdgeStyleOGL2D are in unnamed module of loader repast.simphony.plugin.ExtendablePluginClassLoader @61af1510)
对于以这种方式设置链接样式,您应该遵循 Zombies_Demo 模型中 zombies.style.LinkStyle class 中的示例。 class 的相关部分如下所示:
public class LinkStyle implements EdgeStyleOGL2D {
public Color getColor(RepastEdge<?> edge) {
BaseLink<?> link = (BaseLink<?>) edge;
return ReLogoSupport.lookupColor(link.getColor());
}
public int getLineWidth(RepastEdge<?> edge) {
return (int) (Math.abs(edge.getWeight()));
}
}
并且您可以使用这样的 class 网络(而不是代理)样式。
我的供应链模型中有两种边:demand_links 和 supply_links。 所有链接的默认颜色都是灰色。但是我想在每次更改 demand_link 的属性时将 demand_links 的颜色更改为红色(注意:边缘是通过边缘创建者自定义边缘代理)。如何做到这一点?
下面是我的简单测试代码,但没有用。
public class EdgeStyle2D extends DefaultStyleOGL2D {
@Override
public Color getColor(Object o){
// if (((CustomEdge) o).getCurrent_dl() == 1) {
// return Color.RED;
// }
// else {
// return Color.BLACK;
// }
if (o instanceof Distributor)
return Color.YELLOW;
return null;
}
}
初始化时出现错误。
Caused by: java.lang.ClassCastException: class supplyChainSystem.EdgeStyle2D cannot be cast to class repast.simphony.visualizationOGL2D.EdgeStyleOGL2D (supplyChainSystem.EdgeStyle2D and repast.simphony.visualizationOGL2D.EdgeStyleOGL2D are in unnamed module of loader repast.simphony.plugin.ExtendablePluginClassLoader @61af1510)
对于以这种方式设置链接样式,您应该遵循 Zombies_Demo 模型中 zombies.style.LinkStyle class 中的示例。 class 的相关部分如下所示:
public class LinkStyle implements EdgeStyleOGL2D {
public Color getColor(RepastEdge<?> edge) {
BaseLink<?> link = (BaseLink<?>) edge;
return ReLogoSupport.lookupColor(link.getColor());
}
public int getLineWidth(RepastEdge<?> edge) {
return (int) (Math.abs(edge.getWeight()));
}
}
并且您可以使用这样的 class 网络(而不是代理)样式。