//计算分页 private void getPage(){ //计算总页数 if (getRowCount() % getNumber() == 0) { setPageCount(getRowCount() / getNumber()); } else { setPageCount(getRowCount() / getNumber() + 1); } //计算起始坐标 setFrom((getCurrentPage()-1)*getNumber()); int indexSum = 6;//索引的sum值 int startIndex = 0; int endIndex = 0; //计算出索引的位置 if (getPageCount() > indexSum) { if (getCurrentPage() > indexSum/2) { //如果当前页大于分割数量的一半就开始分页 //最后几页的算法 if (getCurrentPage() >= (getPageCount() - indexSum)) { //如果当前页大于等于总页数减去分割数量的一半 if(getCurrentPage() == getPageCount()){ //如果当前页等于总页数不在往后加页数 endIndex = (((getCurrentPage() - indexSum/2) + indexSum) - indexSum/2); }else{ endIndex = (((getCurrentPage() - indexSum/2) + indexSum) - indexSum/2 + 2); } }else{ endIndex = ((getCurrentPage() - indexSum/2) + indexSum); } if(endIndex>getPageCount()){ endIndex = getPageCount(); } startIndex = endIndex - indexSum + 1; }else{ startIndex = 1; endIndex = indexSum; } }else{//原始的那种分页 startIndex = 1; endIndex = getPageCount(); } for (int i = startIndex; i <= endIndex; i++) { paginList.add(i); } }