Có vẻ như nhiều câu trả lời đã được cung cấp và chúng sẽ hoạt động. Tuy nhiên, có một cách để thiết lập tỷ lệ:
<fx:define>
<Screen fx:factory="getPrimary" fx:id="screen" />
</fx:define>
Điều này sẽ giúp bạn phát hiện kích thước của màn hình hiện tại, ứng dụng đang được hiển thị trên. Bây giờ chúng ta có các kích thước màn hình, chúng tôi có thể chơi với nó trong FXML như sau:
<HBox fx:id="hroot" prefHeight="${screen.visualBounds.height}" prefWidth="${screen.visualBounds.width}"> Your FXML elements inside the root... </HBox>
Lưu ý rằng tôi sử dụng visualBounds, vì điều này sẽ làm cho tôi không gian có sẵn trên màn hình, kể từ khi tôi làm không muốn có một chồng chéo với thanh tác vụ trong Windows chẳng hạn. Đối với các ứng dụng toàn màn hình, bạn sẽ chỉ sử dụng 'giới hạn'.
Bây giờ, để đến mức bạn sử dụng tỷ lệ phần trăm, bạn thực sự có thể chơi với giá trị của prefheight và prefWidth. Bạn có thể đặt các phép tính bên trong $ {}.
tùy ý:
Nếu bạn muốn có tất cả các yếu tố của bạn sử dụng kích thước tương đối, chỉ cần tham khảo với họ, sử dụng ID của họ và chiều rộng hoặc chiều cao bất động sản, và làm cho tính toán của bạn.
<VBox fx:id="VBSidebar" prefWidth="${hroot.width*0.15}" prefHeight="${hroot.height}"> more elements.. </VBox>
Hy vọng điều này sẽ hữu ích!
Làm cách nào để bạn đặt các ràng buộc cột bên trong SceneBuilder? Tôi đang sử dụng SceneBuilder 8.1.1, tôi có một GridPane với hai cột, và tôi không thể tìm thấy ràng buộc cột hoặc percentWidth bất cứ nơi nào. – skrilmps