ボタンの幅はいつでもその内容(textProperty
)に自動的にリサイズできますが、もっと必要なものがあります。JavaFX:テキストと同じ幅とサイズのボタン
私はボタンのグループを持っています。それぞれに独自のテキストがあります。私はすべてのボタンが同じ幅を持つようにする必要がありますが、同時に同じ幅を可能な限り小さくしたい(ボタンに余分なスペースや省略記号がないようにします)。
getWidth()
、getlayoutBounds.getWidth()
およびgetlayoutBoundsInParent().getWidth()
は、計算された幅を返さないことを理解するまでは簡単だと思いました。
当初、私が直接、すべてのプロパティ(widthProperty()
などにprefWidthProprety()
)に結合されたが、最終的に私が調査するために戻って手動モードに落ちた:
Button buttonA; // With original text "hello world"
buttonA.setText("Testing new String. This is very long so the width will be very big.");
buttonA.layout();
buttonA.requestLayout();
Platform.runLater(() ->
{
System.out.println(buttonA.getWidth()); // Gives me old value
System.out.println(buttonA.getlayoutBounds.getWidth()); // Gives me old value
System.out.println(buttonA.getlayoutBoundsInParent().getWidth()); // Gives me old value
});
だから今、私はどのようなオプションがありますか?あなたに答えるために
すべてのボタンをVBOXに配置しようとしましたか? VBOXの幅をUSE_COMPUTED_SIZEに設定し、ボタンの幅のプロパティをvboxの幅のプロパティにバインドしてください – Zoltanik
*もう誰もドキュメントを読むことはありませんか?標準のOracle [レイアウト・チュートリアル](http://docs.oracle.com/javase/8/javafx/layout-tutorial/size_align.htm#JFXLY133)には、例としてこれがあります。それは言う:* "各ボタンの高さと幅を決定し、各ボタンの好ましいサイズをセットのボタンの最大の高さと幅に設定するという手間を経ることができます。 (*または*、@ Zoltanik、バインディングを使用して)サイズを計算せずにこの問題を解決する方法を示します。 –