Java 开发工具类Pager

来源:互联网 发布:大数据调研报告 编辑:程序博客网 时间:2024/05/16 06:50
  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3.   
  4. /**分页工具类 
  5.  * @author user 
  6.  * 
  7.  */  
  8. public class Pager {  
  9.     private static final int DEFAULT_PAGESIZE=10;//默认分页的每页显示的条数  
  10.     private static final int DEFAULT_PAGENUM=5;//默显示页码的数量  
  11.     private int pagerIndex;//当前的页码  
  12.     private int pagerCount;//总页码  
  13.     private int pageSize;//每页显示的条数  
  14.     private int recordCount;//总记录数  
  15.     private int offsetNum;//显示页码数量的偏移量  
  16.     private int pageNum;//显示页码的数量  
  17.     public Pager(){}  
  18.     /**构造函数,初始化分页的信息,自动修正 
  19.      * @param pageIndex 当前的页码 
  20.      * @param recordCount   总记录数     
  21.      * @param pageSize  分页每页显示的条数  
  22.      */  
  23.     public Pager(int pageIndex,int recordCount,int pageSize){  
  24.         this.pagerIndex=pageIndex;  
  25.         this.recordCount=recordCount;  
  26.         this.pageSize=pageSize<1?Pager.DEFAULT_PAGESIZE:pageSize;  
  27.         this.pagerCount=(this.recordCount-1)/pageSize+1;  
  28.         if(this.pagerIndex<1this.pagerIndex=1;  
  29.         if(this.pagerIndex>pagerCount) this.pagerIndex=this.pagerCount;  
  30.         this.setPageNum(Pager.DEFAULT_PAGENUM);  
  31.     }  
  32.       
  33.     /**构造函数,初始化分页的信息,自动修正 
  34.      * @param pageIndex 当前的页码 
  35.      * @param recordCount   总记录数     
  36.      * @param pageSize  分页每页显示的条数  
  37.      * @param pagerNum  每页显示的条数 
  38.      */  
  39.     public Pager(int pageIndex,int recordCount,int pageSize,int pagerNum){  
  40.         this(pageIndex,recordCount,pageSize);  
  41.         this.setPageNum(pagerNum);  
  42.     }  
  43.     /**设置分页的信息,自动修正 
  44.      * @param pageIndex 当前的页码 
  45.      * @param recordCount   总记录数 
  46.      * @param pageSize  分页每页显示的条数 
  47.      */  
  48.     public void setPagerInfo(int pageIndex,int recordCount,int pageSize){  
  49.         this.pagerIndex=pageIndex;  
  50.         this.recordCount=recordCount;  
  51.         this.pageSize=pageSize<1?Pager.DEFAULT_PAGESIZE:pageSize;  
  52.         this.pagerCount=(this.recordCount-1)/pageSize+1;  
  53.         if(this.pagerIndex<1this.pagerIndex=1;  
  54.         if(this.pagerIndex>pagerCount) this.pagerIndex=this.pagerCount;  
  55.     }  
  56.     /**得到上一页 
  57.      * @return 
  58.      */  
  59.     public int getProvPageIndex(){  
  60.         return (this.pagerIndex-1)<1?1:this.pagerIndex-1;  
  61.     }  
  62.     /**得到下一页 
  63.      * @return 
  64.      */  
  65.     public int getNextPageIndex(){  
  66.         return (this.pagerIndex+1)>this.pagerCount?pagerCount:this.pagerIndex+1;  
  67.     }  
  68.     public int getPagerIndex() {  
  69.         return pagerIndex;  
  70.     }  
  71.     public int getPagerCount() {  
  72.         return pagerCount;  
  73.     }  
  74.     public int getPageSize() {  
  75.         return pageSize;  
  76.     }  
  77.     public int getRecordCount() {  
  78.         return recordCount;  
  79.     }  
  80.     /**设置显示页码的数量 
  81.      * @param pageNum   显示页码的数量 
  82.      */  
  83.     private void setPageNum(int pageNum){  
  84.         pageNum=pageNum%2==0?pageNum++:pageNum;//页数目录的数量只能为奇数  
  85.         pageNum=pageNum<1?Pager.DEFAULT_PAGENUM:pageNum;//如果显示的页码数量小于1,则设置为默认值  
  86.         pageNum=pageNum>this.pagerCount?(this.pagerCount%2==0?this.pagerCount-1:this.pagerCount):pageNum;//如果显示页码的数量大于总页数,则邓等于页码德总页数  
  87.         this.offsetNum=(pageNum-1)/2;  
  88.         this.pageNum=pageNum;  
  89.     }  
  90.     /**分页目录显示样式 
  91.      * @return 
  92.      */  
  93.     public List<Integer> getShowPageStyle(){  
  94.         List<Integer> list=new ArrayList<Integer>();  
  95.         //当分页的总数量小于等于显示分页的数量  
  96.         if(this.pagerCount<=this.pageNum){  
  97.             for (int i = 1; i <= this.pagerCount; i++){  
  98.                 list.add(i);  
  99.             }   
  100.             return list;  
  101.         }  
  102.         //显示分页数量的偏移量大于当前的页码  
  103.         if(this.offsetNum>=this.pagerIndex){  
  104.             for (int i = 1; i <= this.pageNum; i++) {  
  105.                 list.add(i);  
  106.             }  
  107.             return list;  
  108.         }  
  109.         //当前的页码在最后几页且在偏移量范围之内  
  110.         if(this.pagerIndex>=this.pagerCount-this.offsetNum){  
  111.             for (int i = pagerCount-this.pageNum+1; i <= this.pagerCount; i++) {  
  112.                 list.add(i);  
  113.             }  
  114.             return list;  
  115.         }  
  116.         //普通情况  
  117.         for (int i = this.pagerIndex-offsetNum; i <=this.pagerIndex+this.offsetNum; i++) {  
  118.             list.add(i);  
  119.         }  
  120.         return list;  
  121.     }   
  122.     public static void main(String[] args) {  
  123.         Pager pager=new Pager(5,100,10,5);  
  124.         List<Integer> list=pager.getShowPageStyle();  
  125.         for (Integer integer : list) {  
  126.             System.out.println(integer);  
  127.             System.out.println("================");  
  128.         }  
  129.     }  
  130. }  
0 0