2014-09-09 3 views

ответ

7

Это зависит от расположения, где расположена кнопка. Например, если вы добавите все кнопки в GridPane или BorderPane, вы должны указать каждую ширину каждой соответствующей переменной. В следующем примере я обернуть все кнопки внутри 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); 

Также стоит отметить, что существует два способа указать размер кнопки. Вы можете сделать это в java-коде или указать его в файле javafx .fxml. Вышеупомянутый метод является примером реализации Java-кода.


Вы также можете разжимать максимальные размеры одной кнопки так, чтобы он будет расти, чтобы заполнить все доступное пространство (в отличие от большинства узлов, по умолчанию кнопка узел имеет его максимальный размер, прикрепленными к это предпочтительный размер, так что обычно не растут для заполнения свободного места). Учебник Oracle по адресу Tips for Sizing and Aligning Nodes объясняет это более подробно.

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

Есть еще несколько вариантов: Установить минимальную ширину на каждой из кнопок на то же значение, используя Java-код. Установите минимальную ширину кнопок в таблице стилей CSS для сцены. Я писал свой собственный ответ, но, поскольку он был похож на ваш, я думал, что просто добавлю комментарий. – richj

+0

Yup, есть много свойств, которые можно указать, но размер кнопки обычно обтекает текст, если вы не укажете никаких свойств его размера. Мой ответ показывает самый простой способ сделать ширину такой же с несколькими строками. –

+1

@jewelsea Спасибо, что указал на мою ошибку. Я исправил ответ. Это может не решить переполнение текста, но, по крайней мере, это показывает, что они имеют подобную ширину. –

2

с помощью 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"); 
Смежные вопросы