如何创建一个 Pane 并将子节点
放在中心?
假设Pane
是500
乘500
,Node
是一个ImageView
与 200
by 200
Image
ImageView view = new ImageView();
Image img = new Image("test.png");
view.setImage(img);
Pane pane = new Pane();
pane.setMinWidth(500);
pane.setMinHeight(500);
pane.getChildren().add(view);
最佳答案
你有两个选择:
例如,使用
StackPane
而不是Pane
(因为您可以使用 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();
您可以使用JavaFx Scene Builder,它是JavaFx的可视化布局工具。 例如,如果我想创建一个
Hbox
布局:<?xml version="1.0" encoding="UTF-8"?> <?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>
将其另存为主类中的
myLayout.fxml
并将以下内容添加到您的代码中:Hbox root = FXMLLoader.load(getClass().getResource("myLayout.fxml")); Scene scene = new Scene(root); stage.setScene(scene); stage.show();
关于javafx - 如何使节点在 Pane 中居中javafx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23576044/