java - 如何初始化自定义 javafx Controller 的成员变量?

标签 java dependency-injection controller javafx fxml

在Spring框架中,我可以使用配置文件来加载一个类的成员变量。有没有办法在 javafx 中使用自定义 Controller 或自定义对象执行此操作?

最佳答案

当场景图从 fxml 标记加载时,@FXML 注释使您定义其名称 (fx:id) 的 JavaFX 对象能够将它们的引用反射注入(inject)到 Controller 对象的非公共(public)字段中.

通过在 Controller 对象的类中定义要设置为类变量的值,然后在 initialize() 中以编程方式(而不是在标记中)设置适当的对象属性,您可以完成与您请求的非常相似的事情 Controller 对象的方法。

在场景图加载完成后(因此所有 GUI 对象都已实例化)但在控制权返回到应用程序的调用代码之前调用(如果存在)initialize() 方法。

编辑

您只能在 Controller 中使用 @FXML,它是在 fxml 文件中专门设置的,并且只能用于该类的字段。

这是必需的,因为这些字段将在创建该类的对象期间自动初始化。

 public class MyController implements Initializable{

      @FXML
      Button startButton;

      void initialize(java.net.URL location, java.util.ResourceBundle resources) {
           startButton.addActionLisetner(...);
      }

 }

详细教程在here

关于java - 如何初始化自定义 javafx Controller 的成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20321321/

相关文章:

java - 如何正确施法?

java - 从 java 在 kubernetes 上部署 docker 镜像的示例

java - 基于键列表获取子 HashMap 的最佳方法是什么?

ruby-on-rails - 从 Controller 调用模块函数 (NoMethodError)

javascript - 需要一个并行指令 Controller ,无需创建父 Controller

ruby - 如果 object 在 Rails 中为 nil,如何跳过一段代码?

java - 如何终止(或杀死)Java 中的 Hadoop 作业?

c# - 存储过程的存储库模式

android - 如何避免将FragmentX绑定(bind)到Fragment

dependency-injection - 升级到 AngularDart 0.13.0 并收到有关路由和 di 的错误