ペインを作成し、子Node
を中央に配置するにはどうすればよいですか?
Pane
は500
によって500
であり、Node
は200
によって200
であるImageView
であるとします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);
次の2つの選択肢があります。
たとえば、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();
通常、次のアプローチを使用してノード/ペインを中央に配置します。
<VBox alignment="CENTER">
<HBox alignment="CENTER">
<!-- your node/pane -->
</HBox>
</VBox>