web-dev-qa-db-fra.com

Boutons JavaFX de même taille

J'ai ces boutons de tailles différentes:

Image

Comment puis-je faire tous les boutons avec la même taille?

10
user1285928

Cela dépend de la disposition où se trouve le bouton. Par exemple, si vous ajoutez tous les boutons dans GridPane ou BorderPane, vous devez spécifier chaque largeur de bouton pour correspondre à certaines variables. Dans l'exemple suivant, j'encapsule tous les boutons à l'intérieur de la VBox, définit la largeur de préférence de la VBox et y attache la largeur minimale de tous les boutons:

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);

Il convient également de mentionner qu'il existe deux façons de spécifier la taille du bouton. Vous pouvez le faire dans le code Java Java ou le spécifier dans le fichier javafx .fxml. La méthode ci-dessus est un exemple pour l'implémentation du code Java.


Vous pouvez également desserrer les dimensions maximales d'un bouton afin qu'il s'agrandisse pour remplir l'espace disponible (contrairement à la plupart des nœuds, par défaut, un nœud de bouton a sa taille maximale fixée à sa taille préférée, de sorte qu'il ne grandit généralement pas pour remplir l'espace disponible). Un tutoriel Oracle sur Astuces pour dimensionner et aligner les nœuds explique cela plus en détail.

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

en utilisant css, vous pouvez remplacer la largeur préférée de tous les boutons comme

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

ou créez votre propre classe de style pour certains groupes de boutons et ajoutez le style au bouton comme: css:

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

puis définissez le style de votre bouton avec fxml:

styleClass="my-special-button"

ou en Java

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