2013-04-26 22 views
13

Các JavaFX docs for HBox nói:Tại sao các trẻ em trong HBox JavaFX của tôi không phát triển (SceneBuilder)?

Nếu một hbox được thay đổi kích cỡ lớn hơn chiều rộng ưa thích của mình, theo mặc định nó sẽ giữ cho trẻ em đến độ rộng ưa thích của họ, để lại không gian thêm không sử dụng. Nếu một ứng dụng muốn có một hoặc nhiều trẻ em được phân bổ thêm không gian, nó có thể tùy chọn thiết lập một hạn chế hgrow trên đứa trẻ. Xem "Ràng buộc bố cục tùy chọn" để biết chi tiết.

Trong hình ảnh đính kèm, tại sao nút không điền chiều rộng ngang?

enter image description here

Mà không phải là giống như mã HBox.setHgrow(field, Priority.ALWAYS) các tài liệu tham khảo.

Trả lời

19

Chọn nút của bạn khi bạn đã thực hiện trong ảnh chụp màn hình của bạn và trong những hộp Kích thước trong cửa sổ Layout trên quyền thiết lập Width Max để:

MAX_VALUE 

này sẽ ngừng kích thước tối đa của các nút từ việc liên kết với kích thước ưa thích của nút.

Xem Tips for Sizing and Aligning Nodes

UI điều khiển của Oracle cũng cung cấp tối thiểu mặc định và tối đa kích thước được dựa trên việc sử dụng điển hình của sự kiểm soát. Ví dụ, kích thước tối đa của một đối tượng Button mặc định là kích thước ưa thích của nó bởi vì bạn thường không muốn các nút phát triển tùy ý lớn.

....

Để kích hoạt tất cả các nút để thay đổi kích thước chiều rộng của cửa sổ VBox, chiều rộng tối đa của mỗi nút được thiết lập để các Double.MAX_VALUE không đổi, cho phép điều khiển để phát triển không hạn chế. Một thay thế cho việc sử dụng hằng số giá trị lớn nhất là đặt chiều rộng tối đa thành một giá trị cụ thể, chẳng hạn như 80.0.

+0

tương đương trong mã: 'myButton.setMaxWidth (Double.MAX_VALUE);' –

2

Nếu bạn sử dụng trực tiếp fxml, bạn có thể sử dụng maxWidth="Infinity" hoặc - giống như SceneBuilder khi sử dụng MAX_VALUE được đại diện bởi maxWidth="1.7976931348623157E308".

Điều này có thể giống như thế này (thanh tiến trình là bên trong một GridPane:

<ProgressBar maxWidth="Infinity" prefWidth="200.0" progress="0.0" GridPane.columnIndex="0" GridPane.hgrow="ALWAYS" GridPane.rowIndex="2" GridPane.valignment="CENTER"> 
Các vấn đề liên quan