style hbox examples color anchorpane javafx javafx-2 center pane

hbox - javafx pane border



Cómo centrar un nodo dentro de un panel javafx (2)

Soy nuevo en javafx así que por favor tengan paciencia conmigo. Entonces, lo que quiero hacer es algo realmente simple, pero no puedo descifrar cómo hacerlo correctamente.

Objetivo: Crear un panel que sea 500 por 500. Quiero agregar un nodo y en nuestro caso digamos una vista de imagen que contenga una imagen de 200 por 200. Quiero poder agregar la vista de imagen al panel y tenerlo centrado.

ImageView view = new ImageView(); Image img = new Image("test.png"); view.setImage(img); Pane pane = new Pane(); pane.setMinWidth(500); pane.setMinWidth(500); pane.getChildren().add(view);

Cualquier consejo apreciado, gracias, D


tienes 2 opciones:

1) Por ejemplo, usando StackPane lugar de Pane (porque puedes usar Pos )

StackPane p = new StackPane(); p.setPrefSize(700,700); //set a default size for your stackpane Image img = new Image("test.png"); //create an image ImageView v = new ImageView(img); //create an imageView and pass the image p.getChildren().add(v); //add imageView to stackPane StackPane.setAlignment(v,Pos.CENTER_LEFT); //set it to the Center Left(by default it''s on the center) stage.setScene(new Scene(p)); stage.show();

2) Puede usar JavaFx Scene Builder , es una herramienta de diseño visual para JavaFx. Por ejemplo, si quiero crear un diseño de Hbox :

<?import java.lang.*?> <?import java.net.*?> <?import java.util.*?> <?import javafx.geometry.*?> <?import javafx.scene.*?> <?import javafx.scene.control.*?> <?import javafx.scene.effect.*?> <?import javafx.scene.image.*?> <?import javafx.scene.layout.*?> <?import javafx.scene.shape.*?> <?import javafx.scene.text.*?> <HBox alignment="CENTER" prefHeight="369.0" prefWidth="425.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" > <children> <ImageView fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true" x="0.0" HBox.hgrow="NEVER"> <image> <Image url="@../yourImg.png" /> </image> </ImageView> </children> </HBox>

guárdelo como myLayout.fxml dentro de su clase principal y agregue lo siguiente a su código:

Hbox root = FXMLLoader.load(getClass().getResource("myLayout.fxml")); Scene scene = new Scene(root); stage.setScene(scene); stage.show();


Usualmente uso el siguiente enfoque para centrar un nodo / panel:

<VBox alignment="CENTER"> <HBox alignment="CENTER"> <!-- your node/pane --> </HBox> </VBox>