使用JavaFX将滚动窗格的内容居中,fitToWidth=false

使用JavaFX将滚动窗格的内容居中,fitToWidth=false,java,javafx,alignment,fxml,scrollpane,Java,Javafx,Alignment,Fxml,Scrollpane,你好,我有以下情况: <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 alignmen

你好,我有以下情况:

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

看起来是这样的:

全屏对齐

但是,当您将其宽度缩小时,滚动窗格不起作用

通过对齐调整大小

当我将fitToWidth的值从true更改为false时,我得到:

全屏滚动

因此,没有水平对齐到中心。但是,滚动正在工作:

通过滚动调整大小

是否有可能使对齐和滚动同时工作

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


无法添加超过2张图片,很抱歉。

当视口宽度小于内容宽度时,当然内容的位置由水平滚动条的位置决定,这可能是您想要的


当视口宽度大于内容宽度时,内容子节点的位置由内容的布局以及在其上设置的任何对齐方式确定。内容本身在视口中的位置是视口布局的函数,您对此的控制有限(据我所知)

因此,一种选择是将内容的最小宽度绑定到视口的实际宽度,强制内容至少与视口一样大。您可以在FXML中执行此操作:



当我添加到Hbox minWidth时,它已开始工作。主题可以在解决后关闭。谢谢你,詹姆斯,你是救命恩人!我还了解到我可以通过FXML直接绑定!