質問
HBoxの子要素を管理することは可能です。その結果、すべての子要素の幅の合計はHBoxの幅と同じですか?
要素がHBoxを埋めるように、スペースは残っていません。
子要素の高さは、デフォルトでHBoxの高さであるため、幅はどうですか?私のプログラムの幅を計算したくありません。レイアウトが自動的にこれを行う場合は、計算が必要な場合は良いでしょう。
解決
HBox
にはどのような子が含まれていますか。一部の子供たちはサイズ変更可能なノードではないかもしれません。ただし、一般的に言えば、HBox.setHgrow()
メソッドを使用してHBoxのすべての子に同じPriority
を設定することができます。説明はそのJavadocにあります:
は、に含まれている場合、子供の水平方向の成長優先順位を設定します。 HBOX。設定されている場合、HBoxは優先順位を使用して追加の割り当てを割り当てます。 HBoxが優先幅より大きくサイズ変更されている場合はスペースです。もしの場合 複数のHBOXの子供たちが同じ水平方向に成長している優先順位 余分なスペースは分割夕方 です。水平なしの場合 成長の優先順位が子供に設定されている、HBoxはそれを割り当てられません 利用可能な場合は追加の水平スペース。値をnullに設定します 制約を削除します。
さらに、グリッドのようなレイアウトを取得しようとしている場合は、他のレイアウトオプション、たとえばTilePane
またはFlowPane
、およびGridPane
を試してください。
他のヒント
あなたの答えの簡単なコードはこれになるでしょう:
Button button1 = new Button("Save");
Button button2 = new Button("Delete");
HBox.setHgrow(button1, Priority.ALWAYS);
HBox.setHgrow(button2, Priority.ALWAYS);
.
HBoxペインの名前ではなくHBoxクラスを使用することをお勧めします。
FXML
:
<HBox>
<Label HBox.hgrow="ALWAYS" maxWidth="Infinity">
TEST
</Label>
</HBox>
. @ bdshahabの答えを追加して、HBoxは彼らの子供の優先幅に彼らの子供のサイズを変更しようとするので、彼らは彼らの組み合わせの優先幅がHBox幅より広い場合にのみボックスを埋めるだけです。
だから:
のようなことをする必要があるかもしれませんButton button1 = new Button("Save");
Button button2 = new Button("Delete");
HBox.setHgrow(button1, Priority.ALWAYS);
HBox.setHgrow(button2, Priority.ALWAYS);
button1.setPrefWidth(100000);
button2.setPrefWidth(100000);
.