java - FXML 应用程序中必须完成的所有 "housekeeping"是什么?

标签 java javafx fxml

我目前正在尝试将 JavaFX 应用程序转换为 FXML 应用程序(工作要求),并且我已经绕了一段时间了。我理解基本原理(用户界面和后端工作分别定义),但所有的跳圈、技术细节、解决方法、所有这些初始化()、加载器、启动()、启动()、 Controller 、注入(inject)和诸如此类的事情让我有点难以理解。该应用程序在当前状态下会抛出一个编译时错误,如果我的生活依赖于它,我无法从中推断出任何内容,但我隐约怀疑它会导致整个 FXMLLoader 事物的潜在黑暗。

这不是可行的方法。这些教程仅解释了其中的一部分,而我当前的操作方式仍然是复制/稍微修改我在任何地方找到的代码,并希望它能以某种方式工作,而不是真正理解原理并采取合理的步骤来实现清晰的目标。目标。是否有一个列表,其中列出了使 FXML 应用程序正常工作所需的所有操作,或者对它们如何组合在一起进行了一些清晰的解释?

最佳答案

以下是按通常完成的顺序需要执行的操作的列表:

  1. 在 FXML 文件(例如 ui.fxml)中定义 UI
  2. 为给定的 FXML 编写一个 Controller 类,其中包含带有 @FXML 注释的 JavaFX 字段,以便从上述 FXML 注入(inject)。
  3. 返回 FXML 文件并添加 fx:controller="fullpackagename.ControllerName"
  4. 如有必要,实现public voidinitialize()。这将在注入(inject)后调用。注意方法签名,一定要完全一样。
  5. 编写一个入口点,通常是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/

相关文章:

java - jackson :避免反序列化某些字段但不要忽略它们

java - 获取同一组中所有选定的切换按钮

java - 在不知道父节点的情况下删除节点 (JavaFX)

Java 关键部分似乎不起作用

java - 如何使用 Intellij Idea 的异常断点

java - Log4J 不在日志文件条目之间添加换行符

java - 更新 observableList 的更有效方法

java - 使用 java 或 javafx 打印 html 文件

java - 去除方法的工作原理bindAutoCompletion()类TextFields库ControlsFX

javafx-2 - JavaFX 自定义 Controller 工厂