JavaFX场景生成器:在调整大小时,使包装到滚动窗格中的gridpane保持在角落中

JavaFX场景生成器:在调整大小时,使包装到滚动窗格中的gridpane保持在角落中,javafx,fxml,scenebuilder,Javafx,Fxml,Scenebuilder,我正在制作一个显示图像地图的UI,它被包装成一个锚定窗格,它本身被包装成一个滚动窗格。我想在左下角添加一个覆盖图,显示坐标。当然,即使在调整视图大小和左右滚动地图时,此覆盖也必须可见。 我试图对锚机使用约束,但向右滚动地图时坐标字段消失。 在这里,您可以看到我的层次结构视图以及我希望字段保留的位置: 谢谢你的回答 SplitPane └AnchorPane ├ScrollPane │ └... └Label(etc) 为了重叠标签,我建议采用上述结构。这是因为标

我正在制作一个显示图像地图的UI,它被包装成一个锚定窗格,它本身被包装成一个滚动窗格。我想在左下角添加一个覆盖图,显示坐标。当然,即使在调整视图大小和左右滚动地图时,此覆盖也必须可见。 我试图对锚机使用约束,但向右滚动地图时坐标字段消失。 在这里,您可以看到我的层次结构视图以及我希望字段保留的位置: 谢谢你的回答

SplitPane
  └AnchorPane
    ├ScrollPane
    │  └... 
    └Label(etc)
为了重叠标签,我建议采用上述结构。这是因为标签不在视口中,使视口缩放和变换更容易

考虑到水平
滚动条
不可见的情况,应使用绑定计算标签的
布局

// These can be set in Scene Builder
anchorPane.getChildren().addAll(scrollPane, label);
AnchorPane.setTopAnchor(scrollPane, 0.0);
AnchorPane.setLeftAnchor(scrollPane, 0.0);
AnchorPane.setRightAnchor(scrollPane, 0.0);
AnchorPane.setBottomAnchor(scrollPane, 0.0);
AnchorPane.setLeftAnchor(label, 0.0);

// Bind LayoutY of Label
DoubleBinding labelLayoutYBinding = Bindings.createDoubleBinding(
        () -> scrollPane.getViewportBounds().getHeight() - label.getHeight(),
        label.heightProperty(),
        scrollPane.viewportBoundsProperty());
labelLayoutYBinding.addListener((o, ov, nv) -> label.setLayoutY(nv.doubleValue()));

如果应用程序中始终显示水平
滚动条
,则在场景生成器中设置固定底部偏移比使用绑定更容易

// This can be set in Scene Builder
AnchorPane.setBottomAnchor(label, 13.0); // Set the fixed value to ease up

虽然我不太理解你答案中的“标签绑定布局”部分(所以我没有实现它),但它是有效的!我知道了解约束和主播的目的。感谢您花费的时间!