2

我必须动态更改代理的边框颜色。代理在显示屏上显示为默认圆圈。显示的颜色必须根据代理类中定义的布尔变量进行更改。首次创建和显示代理时,它具有正确的样式,但是当代理类中的布尔变量发生变化时,边框颜色不会改变。如果我对代理的填充颜色执行相同的操作,则效果很好。我把我使用的代码放在这里:

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,但问题仍然存在

4

1 回答 1

3

我在 JZombies 演示中尝试了这个,为每个使用 RandomHelper.nextDouble() 设置的僵尸添加了一个“id”double。边框颜色按预期更改。默认情况下,边框大小为 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;
    }

}
于 2019-11-18T14:55:08.187 回答