Mi Applicationclase 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 FXMLLoadercrea una instancia del controlador correspondiente (dado en el FXMLarchivo a través de fx:controller) invocando primero el constructor predeterminado y luego el initializemé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 initializemétodo? ¿Cuál es la diferencia entre usar un constructor o el initializemé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@FXMLvariables. Claro, lo hace en el método de inicio y no en el constructor, pero ¿initialize()aportaría algún beneficio en su caso?