gpt4 book ai didi

java - 如何在 JavaFx 中添加滚动条

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:33:11 25 4
gpt4 key购买 nike

我正在尝试将 ScrollBar 添加到 HBox。添加了 ScrollBar,但我没有滚动。我怎样才能让它发挥作用?

public class ScrollableItems {

public void scrollableItems(HBox content) {

double height = 180;

ScrollBar sc = new ScrollBar();

content.getChildren().add(sc);

sc.setLayoutX(content.getWidth() - sc.getWidth());
sc.setMin(0);
sc.setOrientation(Orientation.VERTICAL);
sc.setPrefHeight(height);
sc.setMax(height * 2);

sc.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue<? extends Number> ov,
Number old_val, Number new_val) {
content.setLayoutY(-new_val.doubleValue());
}
});
}
}

将 child 添加到 HBox 然后将其传递给上面的 scrollableItems(HBox content) 以添加 SCrollBar

public HBox mainItemsWrapper() {
HBox scrollabelWrapper = new HBox();
scrollabelWrapper.setMaxHeight(180);

HBox entityDetailViewWrapper = new HBox();

entityDetailViewWrapper.getChildren().addAll(.....);

scrollabelWrapper.getChildren().add(entityDetailViewWrapper);
new ScrollableItems().scrollableItems(scrollabelWrapper);

return scrollabelWrapper;
}

谢谢大家......

最佳答案

我真的不明白你为什么要重新发明轮子..你应该使用 ScrollPane相反。

这个小例子展示了如何使用 ScrollPane 类创建一个水平滚动的 HBox:

@Override
public void start(Stage primaryStage) {

HBox hbox = new HBox();

Button b = new Button("add");
b.setOnAction(ev -> hbox.getChildren().add(new Label("Test")));

ScrollPane scrollPane = new ScrollPane(hbox);
scrollPane.setFitToHeight(true);

BorderPane root = new BorderPane(scrollPane);
root.setPadding(new Insets(15));
root.setTop(b);

Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}

关于java - 如何在 JavaFx 中添加滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28037818/

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