2

我有JavaFx TableView,想实现tableView分页显示。javaFx tableView如何实现分页显示?

4

1 回答 1

2

您必须使用分页控件并实现页面工厂。每个应该显示的页面都会调用该工厂,您可以使用其参数 pageIndex 为 TableView 提供项目的子列表:

TableView table = ...

private Node createPage(int pageIndex) {

    int fromIndex = pageIndex * rowsPerPage;
    int toIndex = Math.min(fromIndex + rowsPerPage, data.size());
    table.setItems(FXCollections.observableArrayList(data.subList(fromIndex, toIndex)));

    return new BorderPane(table);
}


@Override
public void start(final Stage stage) throws Exception {

    Pagination pagination = new Pagination((data.size() / rowsPerPage + 1), 0);
    pagination.setPageFactory(this::createPage);
    ...
}

可以在此处找到完整的可运行示例: https ://gist.github.com/timbuethe/7becdc4556225e7c5b7b

PS:我按照jewelsea链接到Oracle JavaFX论坛,这个例子真的很糟糕。我想在这里提供一个清理过的示例。

于 2014-08-21T10:24:38.773 回答