ユーザーがScrollPaneのサイズを変更した場合、ScrollPaneに埋め込まれたFlowPaneに動的にギャップを追加するにはどうすればよいですか?
GridPaneのあるウィンドウがあります。このGridPaneの中にはScrollPaneがあります。このScrollPaneにはVBoxがあります。
FlowPaneに円の配列を追加し、このFlowPaneをVBoxに追加します。
ウィンドウまたはScrollPaneのサイズに応じて、円間のスペースギャップを動的に設定したいと思います。
今のところ5のギャップを入れましたが、FlowPaneのためにウィンドウのサイズが非常に大きくなると、コンテンツは左側に残ります。横のスペースをすべてとってコンテンツをお願いします。
バインドとchangeListenerを試してみましたが、解決策が見つかりませんでした。
一定数の列と同じサイズの子の特殊なケースでは、GridPane
適切なColumnConstraints
。を使用することをお勧めします。
これにより、列内のノードの配置を指定することに加えて、列幅が同じであることを確認できます。
@Override
public void start(Stage primaryStage) throws Exception {
final int columns = 2;
ColumnConstraints columnConstraints = new ColumnConstraints();
columnConstraints.setPercentWidth(100d/columns);
columnConstraints.setHalignment(HPos.CENTER);
GridPane grid = new GridPane();
for (int i = 0; i < columns; i++) {
grid.getColumnConstraints().add(columnConstraints);
}
for (int i = 0; i < 100; i++) {
grid.add(new Circle(50), i % columns, i / columns);
}
ScrollPane scrollPane = new ScrollPane(new VBox(grid));
scrollPane.setFitToWidth(true); // make sure GridPane content resizes with viewport
Scene scene = new Scene(scrollPane, 300, 300);
primaryStage.setScene(scene);
primaryStage.show();
}
GridPane
行/列のインデックスを調整/設定する必要があるため、の子リストの変更は少し複雑になりますが、それほど難しくはありません。インデックスの子の列インデックスi
がでi % columns
あり、行インデックスであることを確認してくださいi / columns
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加