【问题标题】:How to prevent autoscroll in SrollPane in javafx如何防止 javafx 中 SrollPane 中的自动滚动
【发布时间】:2018-06-21 16:13:43
【问题描述】:

我正在开发一个在 ScrollPane 中有一个 VBox 的 javafx 项目。问题是当 vBox 的高度减小时,scrollPane 会自动向上滚动。我该如何防止呢?知道高度增加时它不会滚动!

注意:在 vBox 内部,我有添加/删除一些 TextFields 的按钮,这些按钮会导致 VBox 高度的增加/减少。

由于工作规定,我无法显示整个代码,但这是我在 ScrollPane 中定义和添加 VBox 的地方:

    VBox mainVBox = new VBox();
    mainVBox.setStyle("-fx-background-color: #0292b7");
    mainVBox.setPrefWidth(400); 
    mainVBox.setSpacing(10);
    mainVBox.setPadding(new Insets(3,5,3,5));
    ScrollPane scrollPane = new ScrollPane();
    scrollPane.setContent(mainVBox);
    scrollPane.setPrefWidth(420);
    scrollPane.setPrefHeight(600);
    VBox.setVgrow(scrollPane,Priority.ALWAYS);

【问题讨论】:

  • 没有人愿意涉足您的生产代码 - 但是您需要提供一个 mcve:stackoverflow.com/help/mcve 否则该问题无法回答并将被关闭(可能;)
  • VBox中被点击的Button是否也去掉了?
  • @devpuh 是的,我确实删除了按钮以及文本字段和标签

标签: java javafx javafx-8


【解决方案1】:

这种行为的原因是您删除了当前具有焦点的元素。这会导致焦点转移到容器中的第一个元素,并且 ScrollPane 会自动滚动到该元素。

要更改此设置,您可以在删除 Button 或/和 TextField 之前在代码中添加例如 mainVBox.requestFocus();

【讨论】:

  • 你是对的!这实际上是问题所在。非常感谢,这对我有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 2010-09-17
  • 2011-04-27
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
相关资源
最近更新 更多