AnyLogic如何通过字符串值引用对应Shape text对象并获取其值
AnyLogic通过对象名字符串获取文本对象的实现方案
AnyLogic的Agent实例(Main页面对应的就是顶级Agent实例)内置findElement(String elementName)方法,可直接通过元素名称字符串检索对应的画布元素,具体实现步骤如下:
- 先将
findElement返回的父类Shape对象强转为ShapeText类型,匹配你创建的文本对象类型 - 调用
ShapeText实例的getText()方法即可读取到对应的文本值
示例代码如下:
// 你预先定义存储文本对象总数量的变量,示例名为textTotalCount for (int i = 1; i <= textTotalCount; i++) { // 生成对应规则的对象名字符串 String shapeName = "text" + i; // 检索并强转为文本对象类型 ShapeText targetText = (ShapeText) findElement(shapeName); // 非空判断避免命名不匹配导致的空指针异常 if (targetText != null) { // 获取文本值,后续可替换为你自身的业务逻辑 String textValue = targetText.getText(); // 测试时可使用 traceln(textValue) 打印验证结果 } }
补充注意事项
- 如果你的函数写在非Main的其他Agent内部,需要指定Main实例调用检索方法,写法改为
main.findElement(shapeName),前提是你已配置该Agent对Main的引用权限 findElement为AnyLogic内置公开方法,无需额外导入第三方包即可直接调用
内容的提问来源于stack exchange,提问作者Surendhar Ramana
相关产品推荐
相关产品推荐

