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

j w*_*ill 4 java dependency-injection controller javafx fxml

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

Imr*_*ran 9

@FXML注释使得您定义的名称的JavaFX对象(fx:id)将其引用反射注入到控制器对象中的非公共字段中,因为场景图是从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(...);
      }

 }
Run Code Online (Sandbox Code Playgroud)

详细的教程在这里