web-dev-qa-db-ja.com

JavaFX HBoxの子が成長しないのはなぜですか(SceneBuilder)?

JavaFX HBoxのドキュメント と言う:

Hboxが適切な幅よりも大きいサイズに変更された場合、デフォルトでは、子は適切な幅に維持され、余分なスペースは未使用のままになります。アプリケーションが1つまたは複数の子にその余分なスペースを割り当てられるようにしたい場合、オプションで子にhgrow制約を設定できます。詳細は、「オプションのレイアウト制約」を参照してください。

添付画像で、ボタンがなぜ横幅を埋めないのですか?

enter image description here

ドキュメントが参照するHBox.setHgrow(field, Priority.ALWAYS)コードと同じではありませんか。

14
Ryan J

スクリーンショットで行ったようにボタンを選択し、右側の[レイアウト]ペインの[サイズ]ボックスで[最大幅]を次のように設定します。

MAX_VALUE

これにより、ボタンの最大サイズがボタンの適切なサイズにバインドされなくなります。

Oracleの ノードのサイズ変更と位置合わせのヒントを参照してください

UIコントロールは、コントロールの一般的な使用法に基づくデフォルトの最小サイズと最大サイズも提供します。たとえば、Buttonの最大サイズはデフォルトで適切なサイズに設定されます。通常、ボタンを任意に大きくしたくないためです。

....

すべてのボタンのサイズをVBoxペインの幅に変更できるようにするには、各ボタンの最大幅をDouble.MAX_VALUE定数に設定します。これにより、コントロールを無制限に拡張できます。最大値定数を使用する代わりに、最大幅を80.0などの特定の値に設定することもできます。

23
jewelsea

Fxmlを直接使用する場合は、maxWidth="Infinity"を使用できます。または、maxWidth="1.7976931348623157E308"で表されるMAX_VALUEを使用するときにSceneBuilderが行うのと同じように使用できます。

これは次のようになります(進行状況バーはGridPane内にあります。

<ProgressBar maxWidth="Infinity" prefWidth="200.0" progress="0.0" GridPane.columnIndex="0" GridPane.hgrow="ALWAYS" GridPane.rowIndex="2" GridPane.valignment="CENTER">
3
Mafii