加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何在JavaFx中添加ScrollBar

发布时间:2020-12-15 04:44:59 所属栏目:Java 来源:网络整理
导读:我正在尝试将一个ScrollBar添加到HBox中. ScrollBar被添加,但我没有滚动.我怎样才能使它工作? public class ScrollableItems { public void scrollableItems(HBox content) { double height = 180; ScrollBar sc = new ScrollBar(); content.getChildren().
我正在尝试将一个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());
            }
        });
    }
}

将子项添加到HBox然后将其传递给上面的scrollableItems(HBox内容)以添加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();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读