如何在ScrollPane中获取TextFlow的_visible height_,而不是文本的高度?

时间:2015-01-19 16:30:37

标签: java javafx javafx-8

从FXML中提取(注:JavaFX 8):

<Tab text="Parse tree" closable="false">
    <SplitPane dividerPositions="0.5">
        <SplitPane dividerPositions="0.5" orientation="VERTICAL">
            <TreeView fx:id="parseTree" editable="false"/>
            <!-- TODO: replace with something else -->
            <TextArea fx:id="parseNodeDetails" editable="false"
                style="-fx-font-family: monospace"/>
        </SplitPane>
        <BorderPane>
            <top>
                <ToolBar>
                    <Label fx:id="textInfo"/>
                </ToolBar>
            </top>
            <center>
                <ScrollPane fx:id="inputTextScroll">
                    <TextFlow fx:id="inputText">
                        <padding>
                            <Insets fx:id="inputTextPadding" bottom="5.0"
                                left="5.0" right="5.0" top="5.0"/>
                        </padding>
                    </TextFlow>
                </ScrollPane>
            </center>
        </BorderPane>
    </SplitPane>
</Tab>

现在,我有很多文字。水平和垂直滚动条都显示。

我需要做的是通过设置ScrollPane的{​​{1}}(是的,两个vvalue)来显示某条线,以便突出显示的这条线显示为接近可能位于v可见部分的中间位置。

但我无法在TextFlow上找到告诉我的属性。它的TextFlow返回嵌入文本的总高度,这当然不是我想要的......

简单公式的问题是将行号除以行总数显示是由于水平滚动条而弄乱了。

我很茫然。如何从.getHeight()获得可见高度,仅限于此?

1 个答案:

答案 0 :(得分:0)

好吧,回答自己......

我在其他地方问了同样的问题并得到了答复:

// inputTextScroll is the ScrollPane
final long visibleHeight = inputTextScroll.getViewportBounds().getHeight();

美丽的是它不包括滚动条!完美。