我有一个时间堆栈图,它的数据集可以通过单击单选按钮来更改。当模型运行时,当单击单选按钮时,图表会立即更新其外观。然而,当模型暂停时,当单击单选按钮时,图表的区域变为空白;相反,图例会自动更新。如何手动强制图表区域重新绘制自己?
发布于 2014-11-04 09:24:35
当您暂停一个模型时,实际上只暂停了Anylogic的一部分。处理GUI的线程继续运行,这就是为什么您可以在模型中导航,同时暂停它。这也意味着,如果你试图在模拟暂停的时候更新图表的数据,外观就会刷新,但是--当你的数据在另一个暂停的线程中被更新时--它不会接收到这些数据。
如果您想暂停模拟,并且仍然能够切换图表中显示的数据,您可以查看机场示例模型。它通过调整宽度、高度、x和y,提供了一种在不同图表之间切换的好方法,使之可见/不可见,并调整宽度、高度、x和y。本质上,您可以将所需的所有图表完全重叠,然后使您当前感兴趣的图表可见。
如果您想以编程方式创建图表,在创建图表的基础上,例如使用new TimeStackChart(...),您还必须使用main.presenation.add(...)将其添加到顶级演示文稿组中。如果你不这样做,图表将永远不会出现在模型中,因为模型不会显示任何东西!要查找有关如何以编程方式创建图表的更多信息,请在Main中创建图表,然后在Java编辑器中打开Main。找到您创建的图表,查看它的构造函数(有很多参数!),并使用它作为您希望创建的图表的粗略模板。帮助文档将进一步理解您所看到的参数。
发布于 2014-11-04 06:30:20
你试过chart.refresh();方法了吗?还尝试使用agent.onChange()更新嵌入代理。
希望这有帮助
发布于 2015-01-15 00:28:18
我遇到了同样的问题,并想出了解决办法。
试试这个,我知道它在AnyLogic v7中起作用:
if (getEngine.getState() == getEngine().PAUSED ){
dynChart.setSelectedItemIndices( new int[]{0} );
dynChart.setSelectedItemIndices( null );
}当暂停或结束时,我可以通过选择/取消选择一个图例项来手动刷新图表。我花了几个小时尝试API变体,但没有结果,所以我只是模拟了UI中实际工作的内容,并且它工作了。
我动态地生成一个文本项目作为图表标题,但我没有得到相同的运气,使文本刷新时,暂停时,就像图表。对那件有什么想法吗?
https://stackoverflow.com/questions/26725273
复制相似问题