Mi Application
clase se ve así:
public class Test extends Application {
private static Logger logger = LogManager.getRootLogger();
@Override
public void start(Stage primaryStage) throws Exception {
String resourcePath = "/resources/fxml/MainView.fxml";
URL location = getClass().getResource(resourcePath);
FXMLLoader fxmlLoader = new FXMLLoader(location);
Scene scene = new Scene(fxmlLoader.load(), 500, 500);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
El FXMLLoader
crea una instancia del controlador correspondiente (dado en el FXML
archivo a través de fx:controller
) invocando primero el constructor predeterminado y luego el initialize
método:
public class MainViewController {
public MainViewController() {
System.out.println("first");
}
@FXML
public void initialize() {
System.out.println("second");
}
}
La salida es:
first
second
Entonces, ¿por qué existe el initialize
método? ¿Cuál es la diferencia entre usar un constructor o el initialize
método para inicializar las cosas requeridas por el controlador?
¡Gracias por tus sugerencias!
FXMLLoader
, ¿verdad? Así que no veo ningún beneficio en esperar elinitialize()
método -. Tan pronto como se carga el FXML, el siguiente código tiene acceso a las@FXML
variables. Claro, lo hace en el método de inicio y no en el constructor, pero ¿initialize()
aportaría algún beneficio en su caso?