【发布时间】:2016-07-04 11:08:01
【问题描述】:
在我的 JavaFX FXML 应用程序中,我希望在用户单击主窗口中某处的菜单项时弹出一个辅助窗口,以便用户可以在其中输入一些输入,然后在单击时将其提供给应用程序一个按钮,第二个窗口将被关闭。
那里的所有教程都有些偏离标准。他们描述了如何在纯 JavaFX 中执行此操作,这显然与您使用 FXML 的方式不同,或者他们解释了如何切换场景,从而关闭旧场景。我猜它会很简单,沿着定义 FXML 布局及其控制器,用它们创建一个新场景,然后调用类似的东西
theStage.showScene(userInputWindow);
但一个可行的解决方案似乎要复杂得多,其背后的推理与我的假设不同。例如,在this tutorial 中,我真的不明白他们为什么要把那个演员放在那里,FXMLLoader() 实际上会做什么,或者实际上我将如何使这些内容适应手头的任务。此外,该资源指出“舞台一次只能显示 1 个场景”。在我看来,JavaFX 应用程序似乎极不可能缺少这样一个微不足道的功能,例如在不关闭旧窗口的情况下显示新窗口。也许我误解了舞台和场景是什么以及它们可以做什么。所以我需要知道:
如何在代码中实现上述效果?
解决方案背后的原因是什么;所有相关的东西都在那里做什么?
【问题讨论】:
-
你能展示你目前拥有的东西吗?您的菜单和菜单项是否在 FXML 中定义?你有控制器类吗?你有相关菜单项的处理方法吗?这里和你说你已经看到的东西没有什么不同,所以如果不显示你已经走了多远的基本结构,任何人都很难知道你错过了哪一部分。
-
哦,顺便说一句,您链接的教程充满了错误和根本不正确的陈述:我的建议是忽略它(我已经向作者指出了这些,但他忽略了它们,所以...)。
-
“舞台一次只能显示一个场景”虽然是一个真实的说法,但我不明白为什么你认为这意味着你不能打开第二个窗口。在 JavaFX 中,
Stage是一个窗口。每个人只有一个场景。但显然,您可以根据需要创建和展示任意数量的阶段。
标签: java javafx window fxml scene