【发布时间】:2023-09-24 11:54:01
【问题描述】:
我最近在我的 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() - 给出错误“描述:无法从 Class 转换为 JTextField。”
- 由 getComponentGraphics() - 给出错误“描述:方法 getComponentGraphics() 未为 ShapeTextField 类型定义。”
- by equals - 给出错误“说明:Object 类型中的方法 equals(Object) 不适用于参数 ()。”
代码是:
((JTextField)(editbox.getJComponent())).setHorizontalAlignment(JTextField.LEFT);
这在 Simulation - Simulation Experiment / Java Actions/ Initial Experiment Setup 字段中定义
预期结果:没有错误消息。并且模型应该继续运行窗口。
【问题讨论】:
-
您从哪个 AnyLogic 版本升级?如果您从 AL7 升级,您将不得不更改您的 UI,因为它们从 Java Swing(您的方法仍然假设)切换到完全不同的基于 Web 的 UI。用 AL8 调色板中的新编辑框替换有问题的编辑框,并调整您的代码以使用它附带的新方法。
-
项目符号列表周围需要空行
-
@Benjamin感谢您为我指明了正确的方向。我确实从 AL7 升级了。该模型是由一位客座研究员、一位专家程序员开发的,他后来离开了,我在间隔几个月后尝试运行它。我现在将搜索有关 AL8 基于 Web 的 UI 的信息并了解它。 -
这种摇摆方法在 AnyLogic 8.2 中已被弃用,并在 8.3 中被删除我认为.. 我很确定使用 AnyLogic 中当前的编辑框,您无法对齐文本。因此,您必须从头开始创建自己的编辑框,或者您可以删除该代码行并继续您的生活。这不是那么重要。
-
@Felipe谢谢。我注释掉了代码行和编译的模型。然而,作为第一步,模型提示用户指定输入文件。提供的“浏览”按钮不再起作用,即使我在文本字段中键入整个路径和文件名,提供的“运行”按钮也不起作用。似乎没有办法弄清楚和重建 UI。接下来我会在网上找一些提供Java Swing和新的基于Web的UI之间的对应功能的东西。