JavaFX Scrollpane中的缩放内容

时间:2015-02-04 13:45:28

标签: javafx

我需要一个带有Canvas叠加层的缩放ImageView,伸展在父窗口上,右侧有一个恒定的边距。这表示一个AnchorPane,其中ImageView和Canvas作为子项,每个都有一个表示边距的rightAnchor插图。

我需要将AnchorPane放在ScrollPane中。调整大小后,ScrollPane必须调整AnchorPane中的ImageView和Canvas叠加层的大小,同时保留边距。

我尝试将ImageView和Canvas添加到AnchorPane,并使用ScrollPane.setFitToWidth(true)将AnchorPane添加到ScrollPane。当我增加ScrollPane的大小时,一切正常 - ImageView和Canvas都会扩展以填充ScrollPane,保留右侧的边距。

但是,当我减小ScrollPane的大小时,AnchorPane的大小并没有减少,而是随着滚动条的增加,AnchorPane上的视口正在减少。

注意,直接插入ScrollPane的ImageView确实有效 - 它会在增长和缩小时重新调整。

看起来ScrollPane.setFitToWidth行为会因ScrollPane中的容器而异。

这是正确的,请问有人建议解决方案吗?

罗伯特

2 个答案:

答案 0 :(得分:0)

尝试向其中一个ScrollPane的Bounds属性添加一个侦听器,并在适当的时候从那里减少AnchorPane的大小。

答案 1 :(得分:0)

使用Jurgen的答案解决。

我覆盖了AnchorPane.computeMinHeight,computePrefHeight和computeMaxHeight以返回imageView.minHeight,prefHeight和maxHeight。这将锚定窗格的高度与imageView的高度联系起来 - 这是imageView根据自己的宽度计算的。

然后我向scrollPane.widthProperty添加了一个监听器,它调用了AnchorPane.setPrefWidth,setMinWidth和setMaxWidth

通过这种方式,锚定窗格正确地向封闭的scrollPane发送其首选,最小和最大宽度。