当前位置: 首页 > 知识库问答 >
问题:

如何限制滚动窗格内容的宽度

訾雅畅
2023-03-14

法比安

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="454.0" prefWidth="260.0" xmlns:fx="http://javafx.com/fxml">
  <children>
    <ScrollPane fitToWidth="true" hbarPolicy="AS_NEEDED" hmax="1.0" pannable="false" prefHeight="200.0" prefViewportWidth="100.0" prefWidth="200.0" vbarPolicy="AS_NEEDED" AnchorPane.bottomAnchor="0.0" AnchorPane.    leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
      <content>
        <VBox maxWidth="200.0" prefHeight="500.0" prefWidth="480.0" spacing="5.0">
          <children>
            <TitledPane animated="false" maxWidth="200.0" text="Very long title, should be clipped. Very long title, should be clipped. " textOverrun="CLIP" wrapText="true">
              <content>
                <AnchorPane id="Content" minHeight="0.0" minWidth="0.0" prefHeight="500.0" prefWidth="200.0">
                  <children>
                    <ListView prefHeight="500.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
                  </children>
                </AnchorPane>
              </content>
            </TitledPane>
          </children>
          <padding>
            <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
          </padding>
        </VBox>
      </content>
    </ScrollPane>
  </children>
</AnchorPane>

示例图像

共有1个答案

叶国兴
2023-03-14

您可以将ScrollPane的宽度绑定到TitleDPanes的宽度。这里重要的部分是通过将titlepane的maxWidth和minWidth属性设置为相同的值来强制titlepane恰好适合一个限制值。

fx:ids定义为适当的控件并将它们注入到控制器类中之后:

@FXML
private ScrollPane demoScrollPane;

@FXML
private TitledPane demoTitledPane;

...
// in initialize
demoTitledPane.maxWidthProperty().bind(demoScrollPane.widthProperty().subtract(10).subtract(10));
demoTitledPane.minWidthProperty().bind(demoScrollPane.widthProperty().subtract(10).subtract(10));

第一个.subtract(10)是用于VBox的insets(paddings)。
第二个.subtract(10)是用于用例中使用的布局的默认paddings(我认为)。
当然将它们累加为.subtract(20)简而言之;)。

 类似资料:
  • 给定一个带有一些子节点的巨大的是的内容,我如何滚动以使当前视口之外的子节点之一可见?

  • 我正在尝试获取一些关于组件的信息,这些组件按标准包含在中。特别是我对阅读水平的感兴趣。我怎么参考?

  • 如果将标记放置在块布局和flex布局项中,则其行为似乎有所不同: 第一个(标有绿色背景)的大小由父的宽度(页面宽度)决定。但是放置在flex容器中的第二个似乎具有最大宽度,并且生成超过页面宽度的内容。只有当有很长的单词时才会发生这种情况。有什么方法可以正确限制第二个的宽度,而不需要像显式指定它或通过)删除超过的文本那样的黑客攻击?我已经尝试了但它没有任何区别:(

  • 问题内容: 我有一个 地图,该地图随着用户向下滚动而滑动。但是,它似乎让地图永远滚动,从不让用户实际到达页面底部(有页脚)。 我想做的是让 在到达另一个动态尺寸(高度可变) 的末尾时停止滚动。这两个 并排且在同一行中。 这是我用来使div随用户滚动移动的JavaScript代码: 问题答案: 您不能将方法与滚动功能一起使用,因为滚动值将始终更改并且jQuery无法无限重复相同的动画,因此会产生冲突

  • 基于此注释https://stackoverflow.com/a/29530135/1387524,我添加了一个ScrollPane,以便在画布移到可见区域之外时使用滚动。

  • 问题内容: 我已经创建了JTextpane并在textpane中插入了组件(像Jtextarea这样的组件)。当我在该JTextpane中插入新组件时,JTextpane的Jscrollpane(的垂直滚动条)会自动设置为底部。我想将其设置为最高位置。我怎样才能做到这一点 感谢Sunil Kumar Sahoo 问题答案: 这是我使用的实用程序类。可用于滚动到的顶部,底部,左侧,右侧或水平/垂直中