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>