如何初始化自定义javafx控制器的成员变量?

时间:2013-12-02 05:14:23

标签: java dependency-injection controller javafx fxml

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

1 个答案:

答案 0 :(得分:9)

@FXML注释使得您定义的名称(fx:id)的JavaFX对象能够将其引用反射注入控制器对象中的非公共字段,因为场景图是从fxml标记加载的。

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

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

修改

您只能在Controller中使用@FXML,该控制器专门在fxml文件中设置,并且仅适用于该类的字段。

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

 public class MyController implements Initializable{

      @FXML
      Button startButton;

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

 }

详细教程为here