web-dev-qa-db-ja.com

同じサイズのJavaFXボタン

サイズの異なるこれらのボタンがあります。

画像

すべてのボタンを同じサイズで作成するにはどうすればよいですか?

10
user1285928

ボタンが配置されているレイアウトによって異なります。たとえば、すべてのボタンをGridPaneまたはBorderPaneに追加する場合、特定の変数に対応するように各ボタンの幅を指定する必要があります。次の例では、すべてのボタンをVBox内にラップし、VBox設定幅を設定して、すべてのボタンの最小幅をVBoxに結び付けます。

VBox vBox = new VBox();
vBox.setPrefWidth(100);

Button btn1 = new Button("Short");
Button btn2 = new Button("Super Long Button");

btn1.setMinWidth(vBox.getPrefWidth());
btn2.setMinWidth(vBox.getPrefWidth());

vBox.getChildren().addAll(btn1, btn2);

ボタンのサイズを指定するには2つの方法があることにも言及する価値があります。これは、Javaコードで行うか、javafx .fxmlファイルで指定できます。上記のメソッドは、Javaコード実装の例です。


ボタンの最大サイズを解除して、利用可能なスペースを埋めるように拡大することもできます(ほとんどのノードとは異なり、デフォルトでは、ボタンノードの最大サイズは推奨サイズに固定されているため、通常、利用可能なスペースを埋めることはできません)。 ノードのサイズ設定と位置合わせのヒント に関するOracleチュートリアルで、これについて詳しく説明しています。

VBox vBox = new VBox();

Button btn1 = new Button("Short");
Button btn2 = new Button("Super Long Button");

btn1.setMaxWidth(Double.MAX_VALUE);
btn2.setMaxWidth(Double.MAX_VALUE);

vBox.getChildren().addAll(btn1, btn2);
9
Muhammad Rosli

cssを使用すると、次のようなすべてのボタンの優先幅をオーバーライドできます

.button {
    -fx-pref-width: 200px;
}

または、特定のボタングループ用に独自のスタイルクラスを作成し、次のようにボタンにスタイルを追加します。css:

.my-special-button {
    -fx-pref-height: 28px;
    -fx-pref-width: 200px;
}

次に、いずれかのfxmlでスタイルをボタンに設定します。

styleClass="my-special-button"

またはJavaで

myButton.getStyleClass().add("my-special-button");
7