8

フィギュアやパネルなどのコンテナとしてStackPanelを使用しています。私が発見したのは、座標X、Y(0,0)がパネルの真ん中に配置されていることです。

ペインの左上に移動することはできますか?中心からすべての寸法を計算することははるかに困難です。

4

2 に答える 2

18

StackPane.setAlignment(node、position)メソッドを使用して、StackPaneに追加されたノードのレイアウトをStackpane内の位置に設定できます。

Label topLeftLabel = new Label("Top Left");
StackPane stack = new StackPane();
stack.getChildren().add(topLeftLabel);

StackPane.setAlignment(topLeftLabel, Pos.TOP_LEFT);

これは可能ですが、StackPaneをどのように使用しようとしているのかを簡単に説明すると、通常のPane、またはGroupまたはAnchorPaneを使用して、必要と思われる絶対的な配置を行う方がよいように思われます。達成する。

おそらく、 SceneBuilderなどのビジュアルツールの使用も検討してください。出力されたFXMLを使用しなくても、SceneBuilderは、JavaFXレイアウトメカニズムがどのように機能するかについて、はるかに優れたアイデアを提供するはずです。SceneBuilderはAnchorPane、要素の絶対位置を提供するために使用されるデフォルトのレイアウトペインとして使用します(これは、達成したいもののようです)。

于 2013-02-20T20:31:47.873 に答える
0

もちろん、この状況では前の回答が最適ですが、変換を使用してStackPane上のノードを移動できることを知っておくことも賢明です。

元。

    Label topLeftLabel = new Label("Top Left");
    StackPane stack = new StackPane();
    stack.getChildren().add(topLeftLabel);
    
    topLeftLabel.setTranslateX(stack.getWidth()/2);
    topLeftLabel.setTranslateY(stack.getHeight()/2);

それは同じことをします(しかし少し悪く見えるかもしれません)

于 2021-08-25T12:52:32.640 に答える