2014-09-09 23 views

Antwort

7

Es hängt vom Layout ab, wo sich die Schaltfläche befindet. Wenn Sie beispielsweise alle Schaltflächen in GridPane oder BorderPane hinzufügen, müssen Sie jede Schaltflächenbreite angeben, um bestimmten Variablen zu entsprechen. Im folgende Beispiel wickeln wir alle Tasten innerhalb VBox, setzt VBox Präferenz Breite und binden alle Tasten Mindestbreite, um es:

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

Es ist auch zu erwähnenswert, dass es zwei Möglichkeiten, um die Knopfgröße angeben. Sie können dies im Java-Code tun oder in der javafx .fxml-Datei angeben. Die obige Methode ist ein Beispiel für die Implementierung von Java-Code.


Sie auch eine Taste des maximalen Abmessungen auszuspannen, so können Sie den verfügbaren Speicherplatz füllen wachsen (im Gegensatz zu den meisten Knoten, eine Schaltfläche Knoten standardmäßig ist es maximale Größe geklemmt es bevorzugt, Größe ist, so dass es nicht in der Regel wächst um den verfügbaren Platz zu füllen). Ein Oracle-Tutorial auf Tips for Sizing and Aligning Nodes erklärt dies genauer.

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

Es gibt ein paar mehr Varianten: auf jeder der Tasten auf den gleichen Wert eine Mindestbreite Set Java-Code. Legen Sie im CSS-Stylesheet für die Szene eine minimale Schaltflächenbreite fest. Ich habe meine eigene Antwort geschrieben, aber da es deiner ähnlich war, dachte ich, ich würde einfach einen Kommentar hinzufügen. – richj

+0

Yup, es gibt eine Menge mehr Eigenschaften, die angegeben werden können, aber die Größe der Schaltfläche wird normalerweise um den Text gewickelt, wenn Sie keine Größeneigenschaften angeben. Meine Antwort zeigt die einfachste Möglichkeit, die Breite mit wenigen Zeilen gleich zu machen. –

+1

@jewelsea Danke für den Hinweis auf meinen Fehler. Ich habe die Antwort behoben. Es löst zwar möglicherweise keinen Textüberlauf, aber am wenigsten zeigt es, dass sie jetzt eine ähnliche Breite haben. –

2

mit CSS Sie die bevorzugte Breite aller Tasten außer Kraft setzen können wie

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

oder Ihre eigene Stil-Klasse für bestimmte Tastengruppen erstellen und den Stil der Schaltfläche wie hinzufügen: css:

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

und legen Sie den Stil, um Ihre Schaltfläche mit entweder fxml:

styleClass="my-special-button" 

oder in Java

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