Una escena de JavaFx 2.0 se puede componer como una pantalla de Swing y se puede evitar el uso de código “spaguetti” para ir definiendo los distintos componentes de los paneles que forman una pantalla gracias a FXML.
¿Cómo se usa un fichero FXML? La mejor forma de entender un fichero FXML es verlo como esa clase Java de código “spaguetti” puesta en notación XML. Tomemos como ejemplo la clase MiPantalla.java
public class MiPantalla extends JPanel{
public MiPantalla(){
inicializar();
}
private void inicializar(){
}
}
En una clase de código “spaguetti” MiPantalla si quieres definir un layout para un panel incluyes el import del tipo de layout y lo incluyes en una función
import java.awt.BorderLayout;
public class MiPantalla extends JPanel{
Public MiPantalla(){
inicializar();
}
Private void inicializar(){
setLayout(new BorderLayout());
}
}
Pues esto es prácticamente igual en un fichero FXML:
<?import javafx.scene.layout.AnchorPane?>
Ojo con este paso porque es la dinámica para usar FXML. Cuando se quiere usar una etiqueta nueva lo primero es incluir su “import” correspondiente en la parte superior del fichero XML. Una vez incluida se puede usar la etiqueta en el XML. Y esto es para todos los componentes igual.
Una vez que se incluye un componente en forma de etiqueta de XML también se puede acceder a todas sus propiedades de dicho componente en forma de atributo. Supone que tienes el siguiente código:
…
AnchorPane anchorPane = new AnchorPane();
anchorPane.setId("AnchorPaneId");
…
El equivalente en FXML seria:
<AnchorPane id="AnchorPaneId" prefHeight="500" prefWidth="800" xmlns:fx="http://javafx.com/fxml" fx:controller="es.ejemplo.Control">
</AnchorPane>
Es decir, el nombre del atributo es la función “setXXXX” quitándole el prefijo “set” y cambiando la primera letra a minúscula (ojo que Java es “Case sensitive”).
Respecto a los paneles que se pueden usar en JavaFx 2.0 son AnchorPane, BorderPane, FlowPane, GridPane, HBox, StackPane, TilePane y VBox.
Tambien cabe destacar el atributo fx:controller. Este atributo indica el nombre de la clase donde estarán “mapeados” todos los componentes y todas las acciones de esos componentes para que puedan interactuar con el resto de la aplicación. Esto se verá mejor en los siguientes post cuando se empiece con los componentes.
No hay comentarios:
Publicar un comentario