我最近在我的 Windows 10 笔记本电脑上更新到 AnyLogic PLE 8.4.0 和 Java SE 12。现在,以前工作的 AnyLogic 模型因错误“未定义 ShapeTextField 类型的方法 getJComponent()”而停止。我在 AnyLogic/Help 中查找它,我注意到 getJComponent 被标识为“已弃用”并且没有标识任何替代方法。在我看来,导致此错误的 AnyLogic 和 Java 更新之间发生了一些不匹配。我将不胜感激任何使模型正常工作的解决方法。
尝试用以下内容替换 getJComponent():
- 通过 getX() - 给出错误“无法从 double 转换为 Jtextfield”
- 通过 getPresentable() - 给出错误“无法从 Presentable 转换为 Jtextfield”
- 通过 getClass() - 给出了错误“说明:无法从类转换为 JTextField。”
- 通过 getComponentGraphics() - 给出错误“说明:方法 getComponentGraphics() 未针对 ShapeTextField 类型定义。”
- by equals - 给出错误“说明:Object 类型中的 equals(Object) 方法不适用于参数 ()。”
代码是:
((JTextField)(editbox.getJComponent())).setHorizontalAlignment(JTextField.LEFT);
这是在 Simulation - Simulation Experiment/Java Actions/Initial Experiment Setup 字段中定义的
预期结果:没有错误信息。并且模型应该继续运行窗口。
最佳答案
感谢 @Benjamin
和 @Felipe
的输入,以下工作:
- 我用相应的工件替换了编辑框和按钮 AL8.4 调色板。我将早期工件中的代码复制到 新工件中的相应字段。我删除了工件 来自 AL7。
- 我注释掉了用于对齐编辑框的行,因为 该功能不再可用。
通过以上两项更改,我没有收到有关未定义方法的错误消息。编辑框和按钮起作用,允许我输入 XML 文件名并使用 XML 解析器例程读取它。我现在遇到了 JAXB 与 AL8.4 集成的问题,并且还没有能够解决这个问题。我将把它作为一个单独的问题发布。
关于java - AnyLogic 弃用方法 getJComponent() 的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57403141/