Si editamos el fichero HolaMundoFX.java creado en el ejemplo anterior podremos observar el código que Netbeans ha generado automáticamente. Vamos a analizar dicho código para entender la estructura de una aplicación JavaFX.
public class HolaMundoFX extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
- La clase creada herera de
javax.application.Application
. El métodostart()
es el punto de entrada a cualquier aplicación JavaFX. - La aplicación JavaFX define un contenedor para la aplicación que contiene un
stage
(recibido por parámetro en el métodostart
) y unscene
.- La clase
Stage
representa en JavaFX un contenedor de máximo nivel. - La clase
Scene
representa un contenedor donde incluimos todos los demás elementos de la ventana (botones, etiquetas, gráficos, etc).
- La clase
- En las líneas del 20 a 23 se crea una escena con un determinado tamaño. Se añade un título al
Stage
, se le añade la escena creada y se hace visible. - En JavaFX, el contenido de una escena es representado como una jerarquía de nodos gráficos. En el ejemplo, el nodo raíz es un objeto de tipo
StackPane
, el cual es un nodo contenedor redimensionable. Es decir, que modificará su tamaño automáticamente si es redimensionado elStage
. - El nodo raiz contiene un nodo hijo, un botón con texto, con un manejador de eventos que imprime un mensaje cuando el botón es pulsado.
- El método
main
no es necesario para lanzar aplicaciones JavaFX. Sin embargo, es aconsejable utilizarlo e invocar desde él el métodolaunch()
. Eso permite por ejemplo, que aplicaciones Swing (necesitan el métodomain
), pueden embeber código Java FX.