我正在尝试在控制器中创建一个基本的分页控件,它看起来像是没有被称为cratePage方法: 这是初始化方法:
OpenProcess
这是createPage方法:
public void initialize(URL location, ResourceBundle resources) {
//bla
pagination = new Pagination(githubRepo.getTotalCount()/rowsPerPage+1,0);
//pagination.setPageFactory(this::createPage);
//pagination.setPageFactory((Integer pageIndex) -> createPage(pageIndex));
pagination.setPageFactory(new Callback<Integer, Node>() {
@Override
public Node call(Integer pageIndex) {
return createPage(pageIndex);
}
});
}
谢谢!
答案 0 :(得分:2)
使用fxml + controller时,您不应该对与fxml部分对应的字段进行赋值,因为您只需替换注入的值。在您的情况下,您将Pagination
插入到场景中的现有FXMLLoader
替换为您自己创建的新场景但从不插入场景。这是您调整的新Pagination
,而不会修改场景中显示的那个。
您需要摆脱构造函数调用:
@FXML
private Pagination pagination;
@Override
public void initialize(URL location, ResourceBundle resources) {
//bla
pagination.setPageCount(githubRepo.getTotalCount()/rowsPerPage+1);
pagination.setCurrentPageIndex(0);
pagination.setPageFactory(new Callback<Integer, Node>() {
@Override
public Node call(Integer pageIndex) {
return createPage(pageIndex);
}
});
}
这当然只有在Pagination
是fxml:
...
<Pagination fx:id="pagination" ...>
...