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



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

SplitPane
  └AnchorPane
    ├ScrollPane
    │  └... 
    └Label(etc)

为了重叠标签,我建议使用上述结构。这是因为标签不在视口之外,使视口缩放和转换更容易。

考虑到大小写水平ScrollBar是不可见的,则应使用绑定来计算标签LayoutY

// 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()));

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

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

最新更新