隨筆-2  評(píng)論-0  文章-20  trackbacks-0
          package test;

          import java.util.List;

          public class Pager<T> {   
                
              
          private List<T> list; //對(duì)象記錄結(jié)果集   
              private int total = 0// 總記錄數(shù)   
              private int limit = 20// 每頁(yè)顯示記錄數(shù)   
              private int pages = 1// 總頁(yè)數(shù)   
              private int pageNumber = 1// 當(dāng)前頁(yè)   
                 
              
          private boolean isFirstPage=false;        //是否為第一頁(yè)   
                   private boolean isLastPage=false;         //是否為最后一頁(yè)   
                   private boolean hasPreviousPage=false;   //是否有前一頁(yè)   
                   private boolean hasNextPage=false;       //是否有下一頁(yè)   
                 
              
          private int navigatePages=8//導(dǎo)航頁(yè)碼數(shù)   
              private int[] navigatePageNumbers;  //所有導(dǎo)航頁(yè)號(hào)   
                 
              
          public Pager(int total, int pageNumber) {   
                  init(total, pageNumber, limit);   
              }
             
                 
              
          public Pager(int total, int pageNumber, int limit) {   
                  init(total, pageNumber, limit);   
              }
             
                 
              
          private void init(int total, int pageNumber, int limit){   
                  
          //設(shè)置基本參數(shù)   
                  this.total=total;   
                  
          this.limit=limit;   
                  
          this.pages=(this.total-1)/this.limit+1;   
                     
                  
          //根據(jù)輸入可能錯(cuò)誤的當(dāng)前號(hào)碼進(jìn)行自動(dòng)糾正   
                  if(pageNumber<1){   
                      
          this.pageNumber=1;   
                  }
          else if(pageNumber>this.pages){   
                      
          this.pageNumber=this.pages;   
                  }
          else{   
                      
          this.pageNumber=pageNumber;   
                  }
             
                     
                  
          //基本參數(shù)設(shè)定之后進(jìn)行導(dǎo)航頁(yè)面的計(jì)算   
                  calcNavigatePageNumbers();   
                     
                  
          //以及頁(yè)面邊界的判定   
                  judgePageBoudary();   
              }
             
                 
              
          /**  
               * 計(jì)算導(dǎo)航頁(yè)  
               
          */
            
              
          private void calcNavigatePageNumbers(){   
                  
          //當(dāng)總頁(yè)數(shù)小于或等于導(dǎo)航頁(yè)碼數(shù)時(shí)   
                  if(pages<=navigatePages){   
                      navigatePageNumbers
          =new int[pages];   
                      
          for(int i=0;i<pages;i++){   
                          navigatePageNumbers[i]
          =i+1;   
                      }
             
                  }
          else//當(dāng)總頁(yè)數(shù)大于導(dǎo)航頁(yè)碼數(shù)時(shí)   
                      navigatePageNumbers=new int[navigatePages];   
                      
          int startNum=pageNumber-navigatePages/2;   
                      
          int endNum=pageNumber+navigatePages/2;   
                         
                      
          if(startNum<1){   
                          startNum
          =1;   
                          
          //(最前navigatePages頁(yè)   
                          for(int i=0;i<navigatePages;i++){   
                              navigatePageNumbers[i]
          =startNum++;   
                          }
             
                      }
          else if(endNum>pages){   
                          endNum
          =pages;   
                          
          //最后navigatePages頁(yè)   
                          for(int i=navigatePages-1;i>=0;i--){   
                              navigatePageNumbers[i]
          =endNum--;   
                          }
             
                      }
          else{   
                          
          //所有中間頁(yè)   
                          for(int i=0;i<navigatePages;i++){   
                              navigatePageNumbers[i]
          =startNum++;   
                          }
             
                      }
             
                  }
             
              }
             
            
              
          /**  
               * 判定頁(yè)面邊界  
               
          */
            
              
          private void judgePageBoudary(){   
                  isFirstPage 
          = pageNumber == 1;   
                  isLastPage 
          = pageNumber == pages && pageNumber!=1;   
                  hasPreviousPage 
          = pageNumber > 1;   
                  hasNextPage 
          = pageNumber < pages;   
              }
             
                 
                 
              
          public void setList(List<T> list) {   
                  
          this.list = list;   
              }
             
            
              
          /**  
               * 得到當(dāng)前頁(yè)的內(nèi)容  
               * 
          @return {List}  
               
          */
            
              
          public List<T> getList() {   
                  
          return list;   
              }
             
            
              
          /**  
               * 得到記錄總數(shù)  
               * 
          @return {int}  
               
          */
            
              
          public int getTotal() {   
                  
          return total;   
              }
             
            
              
          /**  
               * 得到每頁(yè)顯示多少條記錄  
               * 
          @return {int}  
               
          */
            
              
          public int getLimit() {   
                  
          return limit;   
              }
             
            
              
          /**  
               * 得到頁(yè)面總數(shù)  
               * 
          @return {int}  
               
          */
            
              
          public int getPages() {   
                  
          return pages;   
              }
             
            
              
          /**  
               * 得到當(dāng)前頁(yè)號(hào)  
               * 
          @return {int}  
               
          */
            
              
          public int getPageNumber() {   
                  
          return pageNumber;   
              }
             
            
            
              
          /**  
               * 得到所有導(dǎo)航頁(yè)號(hào)   
               * 
          @return {int[]}  
               
          */
            
              
          public int[] getNavigatePageNumbers() {   
                  
          return navigatePageNumbers;   
              }
             
            
              
          public boolean isFirstPage() {   
                  
          return isFirstPage;   
              }
             
            
              
          public boolean isLastPage() {   
                  
          return isLastPage;   
              }
             
            
              
          public boolean hasPreviousPage() {   
                  
          return hasPreviousPage;   
              }
             
            
              
          public boolean hasNextPage() {   
                  
          return hasNextPage;   
              }
             
            
              
          public String toString(){   
                  StringBuffer sb
          =new StringBuffer();   
                  sb.append(
          "[")   
                      .append(
          "total=").append(total)   
                      .append(
          ",pages=").append(pages)   
                      .append(
          ",pageNumber=").append(pageNumber)   
                      .append(
          ",limit=").append(limit)   
                      .append(
          ",isFirstPage=").append(isFirstPage)   
                      .append(
          ",isLastPage=").append(isLastPage)   
                      .append(
          ",hasPreviousPage=").append(hasPreviousPage)   
                      .append(
          ",hasNextPage=").append(hasNextPage)   
                  .append(
          ",navigatePageNumbers=");   
                  
          int len=navigatePageNumbers.length;   
                  
          if(len>0)sb.append(navigatePageNumbers[0]);   
                  
          for(int i=1;i<len;i++){   
                      sb.append(
          ' ');   
                      sb.append(navigatePageNumbers[i]);   
                  }
             
                  sb.append(
          ",list.size="+list.size());   
                  sb.append(
          "]");   
                  
          return sb.toString();   
              }
             
          }
          比較實(shí)用,轉(zhuǎn)載
          posted on 2011-02-24 17:32 soken 閱讀(217) 評(píng)論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 敦化市| 霍邱县| 华亭县| 太原市| 彭阳县| 苏州市| 闽清县| 民勤县| 黔江区| 民丰县| 南皮县| 凤凰县| 岑巩县| 平定县| 眉山市| 长宁县| 平利县| 丹凤县| 盐边县| 苗栗市| 呼伦贝尔市| 巧家县| 宝坻区| 繁昌县| 安义县| 泰来县| 松溪县| 绥中县| 乌鲁木齐市| 博客| 丰宁| 资溪县| 无为县| 横山县| 诸暨市| 库车县| 康保县| 荆门市| 龙陵县| 广灵县| 临颍县|