JavaFX分页工厂无法正常工作

时间:2018-02-19 20:01:48

标签: javafx

我正在尝试在控制器中创建一个基本的分页控件,它看起来像是没有被称为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);
        }
    });



} 

谢谢!

1 个答案:

答案 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" ...>
...