我必须动态更改代理的边框颜色。代理在显示屏上表示为默认圆圈。必须根据代理类内部定义的布尔变量来更改显示的颜色。 首次创建和显示座席时,它具有正确的样式,但是当座席类中的布尔变量更改时,边框颜色不会更改。 如果我对代理的填充颜色执行相同操作,则效果很好。我把我使用的代码放在这里:
public class NodeStyle extends DefaultStyleOGL2D{
@Override
public Color getBorderColor(Object agent) {
Color borderColor = Color.BLACK;
if(agent instanceof Process) {
Process p = (Process)agent;
if(p.isParticularNode) {
borderColor = Color.RED;
}
}
return borderColor;
}
}
创建代理并将其添加到上下文后,它将采用正确的颜色,但是如果isParticularNode
发生更改,则边框颜色不会更改。
我也尝试过导入接口StyleOGL2D
,但问题仍然存在
答案 0 :(得分:2)
我在JZombies演示中尝试了此操作,在每个刻度上为每个用RandomHelper.nextDouble()设置的僵尸添加了一个“ id”双。边框颜色按预期更改。默认情况下,边框大小为0,因此可能需要在代码中进行更改。
public class ZombieStyle extends DefaultStyleOGL2D {
public Color getColor(Object agent) {
return Color.RED;
}
public Color getBorderColor(Object agent) {
Zombie z = (Zombie)agent;
if (z.getID() > 0.5) {
return Color.GREEN;
}
return Color.black;
}
public int getBorderSize(Object agent) {
return 4;
}
}