我有一个包含多个代理的模型,每个模型都有几个流量和股票,还有一个分析代理。我想让用户在模拟运行期间为任何流/股票/变量添加一个时间图。其想法是有多个单选按钮或组合框,允许用户选择任何代理的任何元素,并自动创建元素的绘图。我发现在用单选按钮触发循环事件方面取得了一些成功,然后该事件用来自另一个代理的预定义元素更新了分析代理中的助手变量,并绘制了该变量。然而,问题是,我必须预先定义我想要在用户触发的事件中绘制的元素。我可以为模型中的每个元素创建一个事件,但我希望有一种更直接地将用户输入转换为元素的可用路径的方法。
例如:我有两个代理,a和b。在代理a中有流" flow ",在代理b中有一个绘图“绘图”和一个按钮“按钮”(或者任何其他控件元素(如果在本例中更有用)。当模型运行时,用户应该能够按下按钮,该按钮将"flow“添加到”绘图“中。对于这个问题是否有一个简单的解决方案,即可以(至少在某种程度上)扩展到大量的代理和可绘制元素?
任何帮助都是非常感谢的!
发布于 2021-12-17 05:40:29
您将需要使用一些更高级的Java特性来完成这一任务,即功能接口。
请看下面的示例

我有两个不同的流程和股票图表和一个按钮,每一个绘制流程。
变量是一个功能接口,称为供应商。(您可以在这里更多地阅读https://www.baeldung.com/java-8-functional-interfaces)
数据集使用这个函数接口来更新x的y值和时间。

现在我唯一需要做的就是更改dataUpdater并覆盖get(),以显示我选择的绘制流程。

在另一个按钮中,我重写get()函数以返回flow2
plotFlow函数只是重置图表和数据集以重新开始。
plot.removeAll();
dataset.reset();
plot.addDataSet(dataset);现在,您可以将图表、dataUpdater变量和数据集放在一个单独的代理中,并且可能有一个接受Supplier的更新函数,这样您就可以按字面意思绘制任何内容,只要它给您一个返回双值的供应商。
https://stackoverflow.com/questions/70383960
复制相似问题