gpt4 book ai didi

java - 如何在 BorderPane 中重新定位 VBox?

转载 作者:行者123 更新时间:2023-12-01 14:05:39 25 4
gpt4 key购买 nike

我有一个充满 ImageView 的 VBox,并且 VBox 放置在中心的 BorderPane 内。
现在,当移动 ScrollBar 时,我得到它的值,并且我希望我的 VBox 按 Y 轴重新定位,就像 ScrollBar 值一样。
我的代码很简单:

@Override
public void start(Stage stage) throws Exception {
stage.setTitle("MyScrollbarSample");

ScrollBar scrollBar = new ScrollBar();
scrollBar.setBlockIncrement(10);
scrollBar.setMax(180);
scrollBar.setOrientation(Orientation.VERTICAL);
// scrollBar.setPrefHeight(180);
scrollBar.setValue(90);

final VBox vBox = new VBox(1);
// vBox.setPrefHeight(180);
for (int i = 1; i < 6; i++) {
vBox.getChildren().add(new ImageView(new Image(getClass().getResourceAsStream("fw" + i + ".jpg"))));
}

scrollBar.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
System.out.println("newValue=" + newValue.doubleValue());
// vBox.setLayoutY(-newValue.doubleValue());
vBox.relocate(vBox.getLayoutX(), - newValue.doubleValue());
}
});

BorderPane borderPane = new BorderPane();
borderPane.setCenter(vBox);
borderPane.setRight(scrollBar);
stage.setScene(new Scene(borderPane));
stage.show();
}

不幸的是,当我移动 ScrollBar 时,setLayoutY 和 VBox 上的重新定位都不会移动它。

最佳答案

听起来您正在尝试制作一个随滚动条 float 的 vbox。您可以尝试将滚动条值属性绑定(bind)到适当的 vbox 布局尺寸,而不是使用监听器。例如

ScrollBar bar = new ScrollBar();
VBox box = new VBox();

box.layoutYProperty().bind(bar.valueProperty());

但是,如果您只是将 VBox 放置在边框 Pane 的中心,那么这可能不起作用,具体取决于您如何将 VBox 放置在边框 Pane 中。您可能需要将 VBox 包装在 AnchorPane 中,以便可以像这样进行绝对定位。

我不是 100% 确定这会起作用,但您可能想尝试一下。祝你好运。

关于java - 如何在 BorderPane 中重新定位 VBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18930159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com