JavaFX Scene Builder:调整大小时使包裹在滚动窗格中的网格窗格保持在角落
JavaFX Scene Builder : make gridpane wrapped into scrollpane remain in corner when resizing
我正在制作这个 UI,其中显示图像映射,包裹在锚定窗格中,它本身包裹在滚动窗格中。我想在左下角添加一个叠加层,显示坐标。即使在调整视图大小时并左右滚动地图时,此叠加层当然也必须可见。
我尝试对锚定窗格使用约束,但向右滚动地图时坐标字段消失。
在这里您可以看到我的层次结构视图以及我希望该字段保留的位置:
scene builder view
感谢您的回答。
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
始终显示在您的应用程序中,则在 Scene Builder 中设置固定底部偏移比使用绑定更容易。
// This can be set in Scene Builder
AnchorPane.setBottomAnchor(label, 13.0); // Set the fixed value to ease up
我正在制作这个 UI,其中显示图像映射,包裹在锚定窗格中,它本身包裹在滚动窗格中。我想在左下角添加一个叠加层,显示坐标。即使在调整视图大小时并左右滚动地图时,此叠加层当然也必须可见。 我尝试对锚定窗格使用约束,但向右滚动地图时坐标字段消失。 在这里您可以看到我的层次结构视图以及我希望该字段保留的位置: scene builder view 感谢您的回答。
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
始终显示在您的应用程序中,则在 Scene Builder 中设置固定底部偏移比使用绑定更容易。
// This can be set in Scene Builder
AnchorPane.setBottomAnchor(label, 13.0); // Set the fixed value to ease up