2016-04-19 28 views
1

您好我有以下情况:中心ScrollPane中的内容与fitToWidth = FALSE使用JavaFX

<ScrollPane xmlns:fx="http://javafx.com/fxml" fx:controller="MenuController" fx:id="menuPane" stylesheets="/fxml/styles/menu_style.css" fitToWidth="true" fitToHeight="true" hbarPolicy="ALWAYS" vbarPolicy="ALWAYS"> 
    <VBox alignment="CENTER"> 
    <HBox alignment="CENTER"> 
     <VBox fx:id="menuView"> 
     <elements></elements> 
     </VBox> 
    </HBox> 
    </VBox> 
</ScrollPane> 

它看起来像这样:

有定向

Full Screen with alignment

全屏但是,如果将宽度设置得较小,则滚动窗格不起作用。

调整大小与对齐

Resized with alignment

当我改变fitToWidth的值从真到假的,我得到:

全屏幕滚动

Full screen with scrolling

所以没有水平对齐的中心。然而滚动工作:

调整大小与滚动

Resized with scrolling

有没有一种可能,以在同一时间校准和滚动工作?

奇怪的是,高度滚动和垂直对齐工作正常。

不能添加超过2张图片,对不起。

回答

1

当视口宽度小于内容宽度时,内容的位置当然是由水平滚动条的位置决定的,这大概就是你想要的。

当视口宽度大于内容宽度时,则内容的子节点的位置由内容的布局以及您在其上设置的任何对齐来确定。内容本身在视口中的位置是视口布局的一个功能,并且您对该控件的控制有限(据我所知)。

所以一个选项是将内容的最小宽度绑定到视口的实际宽度,强制内容至少与视口一样大。你可以在FXML中做到这一点:

<ScrollPane xmlns:fx="http://javafx.com/fxml" fx:controller="MenuController" fx:id="menuPane" stylesheets="/fxml/styles/menu_style.css" fitToWidth="true" fitToHeight="true" hbarPolicy="ALWAYS" vbarPolicy="ALWAYS"> 
    <VBox alignment="CENTER" minWidth="${menuPane.viewportBounds.width}"> 
    <HBox alignment="CENTER"> 
     <VBox fx:id="menuView"> 
     <elements></elements> 
     </VBox> 
    </HBox> 
    </VBox> 
</ScrollPane> 
+0

它已经开始工作,当我添加到Hbox minWidth。主题可以被解决。谢谢James_D。

+0

你是救命恩人!我还了解到我可以通过FXML直接绑定! <3 –