gpt4 book ai didi

listview - 如何确定用户是否滚动到 ListView 的末尾

转载 作者:行者123 更新时间:2023-12-05 06:42:56 27 4
gpt4 key购买 nike

正如标题所说。我怎样才能发现用户滚动到 javafx 中 ListView 的末尾。

最佳答案

详细阐述一下我的评论:查看 API 我的第一个冲动是在列表中注册一个 onScrollTo 处理程序,并在到达结尾时使用 doStuff(),例如

list.setOnScrollTo(e -> {
if (e.getScrollTarget() >= list.getItems().size() -1) {
doStuff();
}
});

不幸的是,这不起作用:如果方法之一 list.scrollTo(int)list.scrollTo( T)。这已记录在案 - 但想不出我们需要它的任何用例?

这留下了从列表的子项中挖掘 ScrollBar 并监听其 value 属性的肮脏的 ol' 变通方法(注意:需要在安装皮肤后 完成挖掘!) .

一个简单的例子:

public class ScrollToHandlerList extends Application {
private final ObservableList<Locale> data =
FXCollections.observableArrayList(Locale.getAvailableLocales());

private final ListView<Locale> list = new ListView<>(data);

@Override
public void start(Stage stage) {
stage.setTitle("List ScrollTo Handler " + FXUtils.version());
Button leftScrollTo = new Button("scrollto last");
leftScrollTo.setOnAction(e -> {
// explicit calling notifies the onScrollHandler
list.scrollTo(list.getItems().size() -1);
});
// Would expect a onScrollTo handler getting notified
// but isn't ...
list.setOnScrollTo(e -> {
LOG.info("target/size" + e.getScrollTarget() + " / " + data.size());
});
// nor a onScroll handler ...
list.setOnScroll(e -> {
LOG.info("" + e);
});
HBox root = new HBox(leftScrollTo, list);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();

// dirty: lookup the scrollBar and listener to its value property
ScrollBar bar = (ScrollBar) list.lookup(".scroll-bar");
bar.valueProperty().addListener((src, ov, nv) -> {
LOG.info("change on value " + nv);
if (nv.doubleValue() == 1.) {
LOG.info("at max");
}
});
}

public static void main(String[] args) {
launch(args);
}
@SuppressWarnings("unused")
private static final Logger LOG = Logger.getLogger(ScrollToHandlerList.class
.getName());
}

更新

通过 Twitter 获得更多信息:

  • 不通知滚动事件是 intentional ,实际上来自滚动条的事件被 VirtualFlow 阻止了
  • 有一个solution using public api只是,基本上让单元格本身知道到达滚动区域的末尾

关于listview - 如何确定用户是否滚动到 ListView 的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35392740/

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