在 FXML 应用程序中必须完成的所有 "housekeeping" 是什么?
What is all the "housekeeping" that has to be done in a FXML app?
我目前正在尝试将 JavaFX 应用程序转换为 FXML 应用程序(工作要求),我已经 运行 圈子有一段时间了。我了解基本原理(用户界面和后端工作分别定义),但所有的跳圈、技术细节、解决方法、所有那些初始化()、加载器、启动()、启动()、控制器、注入和什么都让我头疼。该应用程序在其当前状态下吐出一个编译时错误,如果我的生活依赖于它,我无法从中发现任何东西,但我隐约怀疑它导致了整个 FXMLLoader 事物的潜在黑暗。
这是行不通的。每个教程只解释了其中的一部分,而我目前的作案手法仍在复制 over/slightly 修改我在任何地方找到的代码,并希望它能以某种方式工作,而不是真正理解原理并采取合理的步骤来实现一个明确的目标。是否列出了使 FXML 应用程序运行所需的所有操作,或者对所有这些如何组合在一起的明确解释?
以下是按通常完成顺序排列的所需事项列表:
- 在 FXML 文件中定义 UI(比如 ui.fxml)
- 为给定的 FXML 编写控制器 class,其中包含带有 @FXML 注释的 JavaFX 字段,将从上述 FXML 中注入。
- 返回 FXML 文件并添加 fx:controller="fullpackagename.ControllerName"
- 如有必要,实施
public void initialize()
。这将在注入后调用。注意方法签名,必须一模一样
- 写一个入口点,通常是
SomethingApp extends Application
。在 Scene
对象构造期间覆盖 start()
将以下内容作为根节点传递到场景 - FXMLLoader.load(getClass().getResource("ui.fxml"))
.
这是一个简短的工作 example。该示例假定您熟悉 Maven 目录结构。如果不是,那么所有 3 个文件,即 App、Controller,ui.fxml 必须在同一个包中,FXMLLoader 才能找到它。
我目前正在尝试将 JavaFX 应用程序转换为 FXML 应用程序(工作要求),我已经 运行 圈子有一段时间了。我了解基本原理(用户界面和后端工作分别定义),但所有的跳圈、技术细节、解决方法、所有那些初始化()、加载器、启动()、启动()、控制器、注入和什么都让我头疼。该应用程序在其当前状态下吐出一个编译时错误,如果我的生活依赖于它,我无法从中发现任何东西,但我隐约怀疑它导致了整个 FXMLLoader 事物的潜在黑暗。
这是行不通的。每个教程只解释了其中的一部分,而我目前的作案手法仍在复制 over/slightly 修改我在任何地方找到的代码,并希望它能以某种方式工作,而不是真正理解原理并采取合理的步骤来实现一个明确的目标。是否列出了使 FXML 应用程序运行所需的所有操作,或者对所有这些如何组合在一起的明确解释?
以下是按通常完成顺序排列的所需事项列表:
- 在 FXML 文件中定义 UI(比如 ui.fxml)
- 为给定的 FXML 编写控制器 class,其中包含带有 @FXML 注释的 JavaFX 字段,将从上述 FXML 中注入。
- 返回 FXML 文件并添加 fx:controller="fullpackagename.ControllerName"
- 如有必要,实施
public void initialize()
。这将在注入后调用。注意方法签名,必须一模一样 - 写一个入口点,通常是
SomethingApp extends Application
。在Scene
对象构造期间覆盖start()
将以下内容作为根节点传递到场景 -FXMLLoader.load(getClass().getResource("ui.fxml"))
.
这是一个简短的工作 example。该示例假定您熟悉 Maven 目录结构。如果不是,那么所有 3 个文件,即 App、Controller,ui.fxml 必须在同一个包中,FXMLLoader 才能找到它。