带分页的JavaFx TableView

带分页的JavaFx TableView,javafx,pagination,tableview,fxml,Javafx,Pagination,Tableview,Fxml,我在Scenebuilder中创建了一个带有表视图和分页的FXML。 但是我很难让分页工作,尤其是PageFactory 我有以下代码: FXML: 我只想用新数据填充表,但返回null会导致错误。 如果我返回其他东西,如ReturnNewBorderPane(表),它也不起作用,同样的错误。 如何解决此问题?您的页面工厂需要返回将显示为“页面”的节点。然后,分页将管理该节点并使其成为其下场景图的一部分。您要做的是在分页中显示TableView,因此您应该从页面工厂返回它 您没有发布任何来自您提

我在Scenebuilder中创建了一个带有表视图和分页的FXML。 但是我很难让分页工作,尤其是PageFactory

我有以下代码:

FXML:

我只想用新数据填充表,但返回null会导致错误。 如果我返回其他东西,如ReturnNewBorderPane(表),它也不起作用,同样的错误。
如何解决此问题?

您的页面工厂需要返回将显示为“页面”的节点。然后,
分页
将管理该节点并使其成为其下场景图的一部分。您要做的是在分页中显示
TableView
,因此您应该从页面工厂返回它

您没有发布任何来自您提到的错误的堆栈跟踪,但我猜发生的情况是,当您返回表时,您会得到一个错误,因为
TableView
已经是场景图的一部分,并且节点不能存在于两个不同的位置

一种解决方案是完全从FXML中省略表,只在控制器中定义它(在
initialize()
方法中设置它,然后从页面工厂返回对它的引用)

如果仍希望在FXML文件中定义它,则可以通过将FXML中不属于场景图的元素包装在图形中来定义这些元素

因此,您的FXML将如下所示:


然后你就这么做了

this.paginator.setPageFactory((Integer pageIndex) -> {
            fillTable(pageIndex);
            return table; 
        }
);

页面工厂需要返回将显示为“页面”的节点。然后,
分页
将管理该节点并使其成为其下场景图的一部分。您要做的是在分页中显示
TableView
,因此您应该从页面工厂返回它

您没有发布任何来自您提到的错误的堆栈跟踪,但我猜发生的情况是,当您返回表时,您会得到一个错误,因为
TableView
已经是场景图的一部分,并且节点不能存在于两个不同的位置

一种解决方案是完全从FXML中省略表,只在控制器中定义它(在
initialize()
方法中设置它,然后从页面工厂返回对它的引用)

如果仍希望在FXML文件中定义它,则可以通过将FXML中不属于场景图的元素包装在图形中来定义这些元素

因此,您的FXML将如下所示:


然后你就这么做了

this.paginator.setPageFactory((Integer pageIndex) -> {
            fillTable(pageIndex);
            return table; 
        }
);
this.paginator.setPageFactory((Integer pageIndex) -> {
            fillTable(pageIndex);
            return table; 
        }
);