web-dev-qa-db-ja.com

ペインjavafx内でノードを中央に配置する方法

ペインを作成し、子Nodeを中央に配置するにはどうすればよいですか?

Pane500によって500であり、Node200によって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);
12
darewreck

次の2つの選択肢があります。

  1. たとえば、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();
    
  2. 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();
    
19
user2768684

通常、次のアプローチを使用してノード/ペインを中央に配置します。

<VBox alignment="CENTER">
    <HBox alignment="CENTER">
        <!-- your node/pane -->
    </HBox>
</VBox>
7
Eng.Fouad