【问题标题】:centering content of ScrollPane with fitToWidth=false using JavaFX使用 JavaFX 将 fitToWidth=false 的 ScrollPane 内容居中
【发布时间】:2016-08-11 11:28:31
【问题描述】:

您好,我有以下情况:

<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 张图片,抱歉。

【问题讨论】:

    标签: java javafx alignment fxml scrollpane


    【解决方案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>
    

    【讨论】:

    • 当我添加到 Hbox minWidth 时它已经开始工作了。主题可以在解决后关闭。谢谢詹姆斯_D。
    • 你是救生员!我还了解到我可以直接通过 FXML 绑定!
    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    相关资源
    最近更新 更多