2015-11-23 35 views
1

我目前正在尝试将JavaFX应用程序转换为FXML应用程序(工作需求),并且我现在已经在圈子中运行了一段时间。我理解基本原理(用户界面和后端工作单独定义),但所有的跳跃,技术性,变通方法,所有初始化(),装载机,start(),launch(),控制器,注入和什么都没有让我有点头痛。目前状态下的应用程序吐出了编译时错误,如果我的生命依赖于它,我无法预测任何东西,但我隐约怀疑它会导致整个FXMLLoader事物的基本内容。在FXML应用程序中必须完成的所有“内务”是什么?

这是没有办法工作。这些教程只解释了它的每一部分,而我目前的做法仍然是复制/稍微修改我发现的任何地方,并希望它能以某种方式工作的代码,而不是真正理解原则并采取理想的步骤来清除目标。有没有我需要做的一切,以使FXML应用程序的工作清单,或一些明确的解释如何一起来?

+0

也许我的答案的后半部分在http://stackoverflow.com/questions/33857389/how-to-pass-data-from-java-to-fxml/33857574#33857574会有所帮助。 –

回答

1

这里的顺序要求做的事情的清单,他们通常做:

  1. 在FXML文件中定义的用户界面(比如ui.fxml)
  2. 写控制器类为给定的FXML这包含带有@FXML注释的JavaFX字段,从上述FXML注入。
  3. 回到FXML文件并添加fx:controller =“fullpackagename.ControllerName”
  4. 如果需要,执行public void initialize()。这将在注射后被调用。注意方法签名,必须完全一样。
  5. 编写一个入口点,通常为SomethingApp extends Application。在覆盖start()期间Scene对象构造将以下作为根节点传递到现场 - FXMLLoader.load(getClass().getResource("ui.fxml"))

这是短暂的工作example。该示例假定您熟悉Maven目录结构。如果没有,那么所有3个文件,即App,Controller,ui.fxml必须位于同一个包中,以便FXMLLoader能够找到它。

相关问题