当模型暂停时,如何让图表重绘自己?

时间:2014-11-03 23:37:56

标签: anylogic

我有一个时间堆栈图表,可以通过单击单选按钮更改其数据集。在模型运行时,图表会在单击单选按钮时立即更新其外观。但是,当模型暂停时,单击单选按钮时图表的区域将变为空白;相反,传奇会自动更新。如何手动强制图表区域重绘?

3 个答案:

答案 0 :(得分:2)

暂停模型时,实际上只暂停了Anylogic的一部分。处理GUI的线程保持运行,这就是为什么你可以在模型暂停时在模型中导航。 这也意味着如果您在模拟暂停时尝试更新图表的数据,则外观将刷新,但是 - 当您的数据在另一个当前暂停的线程中更新时 - 它将不会收到该数据。

如果您想暂停模拟并仍然能够切换图表中显示的数据,您可以查看机场示例模型。它提供了一种很好的方法,通过使它们可见/不可见并调整宽度,高度,x和y来在不同的图表之间切换。从本质上讲,您可以制作所需的所有图表,完美地重叠它们,然后让您看到当前感兴趣的图表。

如果您想以编程方式创建图表,除了使用new TimeStackChart(...)创建图表之外,您还必须使用main.presenation.add(...)将其添加到顶级演示文稿组。如果不这样做,图表将永远不会出现在模型中,因为模型将无法显示任何内容!要查找有关如何以编程方式创建图表的更多信息,请在Main中创建图表,然后在Java编辑器中打开Main。找到你创建的图表,看看它的构造函数(有很多参数!),并将它用作你想要创建的图表的粗略模板。帮助文档将进一步了解您看到的参数。

答案 1 :(得分:0)

您是否尝试过chart.refresh();方法? 还尝试使用agent.onChange()更新嵌入代理。

希望有所帮助

答案 2 :(得分:0)

我遇到了完全相同的问题,并提出了解决方法。

试试这个,我知道在AnyLogic v7中有效:

if (getEngine.getState() == getEngine().PAUSED ){

    dynChart.setSelectedItemIndices( new int[]{0} );

    dynChart.setSelectedItemIndices( null );

}

通过选择/取消选择其中一个图例项,我可以在暂停或完成时手动刷新图表。我花了几个小时尝试API变体无济于事,所以我只是模仿实际在UI中工作的东西并且它有效。

我动态生成一个文本项目作为图表标题,但我没有同样的运气获得文本刷新时暂停像图表。关于那个的任何想法?

相关问题