我目前正在尝试将 JavaFX 应用程序转换为 FXML 应用程序(工作要求),并且我已经绕了一段时间了。我理解基本原理(用户界面和后端工作分别定义),但所有的跳圈、技术细节、解决方法、所有这些初始化()、加载器、启动()、启动()、 Controller 、注入(inject)和诸如此类的事情让我有点难以理解。该应用程序在当前状态下会抛出一个编译时错误,如果我的生活依赖于它,我无法从中推断出任何内容,但我隐约怀疑它会导致整个 FXMLLoader 事物的潜在黑暗。
这不是可行的方法。这些教程仅解释了其中的一部分,而我当前的操作方式仍然是复制/稍微修改我在任何地方找到的代码,并希望它能以某种方式工作,而不是真正理解原理并采取合理的步骤来实现清晰的目标。目标。是否有一个列表,其中列出了使 FXML 应用程序正常工作所需的所有操作,或者对它们如何组合在一起进行了一些清晰的解释?
最佳答案
以下是按通常完成的顺序需要执行的操作的列表:
- 在 FXML 文件(例如 ui.fxml)中定义 UI
- 为给定的 FXML 编写一个 Controller 类,其中包含带有 @FXML 注释的 JavaFX 字段,以便从上述 FXML 注入(inject)。
- 返回 FXML 文件并添加 fx:controller="fullpackagename.ControllerName"
- 如有必要,实现
public voidinitialize()
。这将在注入(inject)后调用。注意方法签名,一定要完全一样。 - 编写一个入口点,通常是
SomethingApp extends Application
。在Scene
对象构造期间,在重写的start()
中,将以下内容作为根节点传递给场景 -FXMLLoader.load(getClass().getResource("ui. fxml"))
。
这是一个简短的工作example 。该示例假设您熟悉 Maven 目录结构。如果不是,那么所有 3 个文件,即 App、Controller、ui.fxml 必须位于同一个包中,FXMLLoader 才能找到它。
关于java - FXML 应用程序中必须完成的所有 "housekeeping"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33870462/