2

2 つの列を持つ GridPane があります。1 つ目は固定サイズの ImageView を含み、2 つ目は Text 要素を持つ VBox を含みます。列幅に合わせるには、この VBox が必要です。グリッドには適切な寸法、ImageView もありますが、2 番目の列の VBox は、親 (グリッド) ではなく、含まれるテキストに適合します。

VBox box = new VBox();
// all three texts can be changed during program execution by user
// (so 'box' width cannot be based on children widths)
box.getChildren().addAll(new Text("1"), new Text("2"), new Text("3"));
box.setStyle("-fx-background-color: red;");

Image image = ...; // image is always 150x150 px
ImageView imgView = new ImageView(image);
GridPane grid = new GridPane();
grid.add(imgView, 0,0);
grid.add(box,1,0);
grid.add(new Text("another content"), 0,1,2,1);

与えられた例によれば、「ボックス」の幅を「グリッド」オブジェクトの 2 列目と同じにしたいと考えています。これを修正する方法は?

ここに画像の説明を入力 緑の枠のコンテナー: GridPane グリッド 水色の枠のコンテナー: VBox ボックス GridPane の背景は赤、VBox の背景はピンクです。親の幅に明らかに適合していないことがわかります。

前もって感謝します

4

2 に答える 2

3

Hgrowを GridPane の子に設定できます。HGrowを asに設定するAlwaysと、それらを占有することができtotal width availableます。

gridPaneboxの子であるため、静的メソッドを使用してプロパティを適用できますsetHgrow

GridPane.setHgrow(box, Priority.Always);

同様の問題については、 setVGrow(Node child, Priority value)heightを使用できます。

于 2015-04-17T08:06:32.510 に答える