隨筆-2  評論-0  文章-20  trackbacks-0
          package test;

          import java.util.List;

          public class Pager<T> {   
                
              
          private List<T> list; //對象記錄結果集   
              private int total = 0// 總記錄數   
              private int limit = 20// 每頁顯示記錄數   
              private int pages = 1// 總頁數   
              private int pageNumber = 1// 當前頁   
                 
              
          private boolean isFirstPage=false;        //是否為第一頁   
                   private boolean isLastPage=false;         //是否為最后一頁   
                   private boolean hasPreviousPage=false;   //是否有前一頁   
                   private boolean hasNextPage=false;       //是否有下一頁   
                 
              
          private int navigatePages=8//導航頁碼數   
              private int[] navigatePageNumbers;  //所有導航頁號   
                 
              
          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){   
                  
          //設置基本參數   
                  this.total=total;   
                  
          this.limit=limit;   
                  
          this.pages=(this.total-1)/this.limit+1;   
                     
                  
          //根據輸入可能錯誤的當前號碼進行自動糾正   
                  if(pageNumber<1){   
                      
          this.pageNumber=1;   
                  }
          else if(pageNumber>this.pages){   
                      
          this.pageNumber=this.pages;   
                  }
          else{   
                      
          this.pageNumber=pageNumber;   
                  }
             
                     
                  
          //基本參數設定之后進行導航頁面的計算   
                  calcNavigatePageNumbers();   
                     
                  
          //以及頁面邊界的判定   
                  judgePageBoudary();   
              }
             
                 
              
          /**  
               * 計算導航頁  
               
          */
            
              
          private void calcNavigatePageNumbers(){   
                  
          //當總頁數小于或等于導航頁碼數時   
                  if(pages<=navigatePages){   
                      navigatePageNumbers
          =new int[pages];   
                      
          for(int i=0;i<pages;i++){   
                          navigatePageNumbers[i]
          =i+1;   
                      }
             
                  }
          else//當總頁數大于導航頁碼數時   
                      navigatePageNumbers=new int[navigatePages];   
                      
          int startNum=pageNumber-navigatePages/2;   
                      
          int endNum=pageNumber+navigatePages/2;   
                         
                      
          if(startNum<1){   
                          startNum
          =1;   
                          
          //(最前navigatePages頁   
                          for(int i=0;i<navigatePages;i++){   
                              navigatePageNumbers[i]
          =startNum++;   
                          }
             
                      }
          else if(endNum>pages){   
                          endNum
          =pages;   
                          
          //最后navigatePages頁   
                          for(int i=navigatePages-1;i>=0;i--){   
                              navigatePageNumbers[i]
          =endNum--;   
                          }
             
                      }
          else{   
                          
          //所有中間頁   
                          for(int i=0;i<navigatePages;i++){   
                              navigatePageNumbers[i]
          =startNum++;   
                          }
             
                      }
             
                  }
             
              }
             
            
              
          /**  
               * 判定頁面邊界  
               
          */
            
              
          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;   
              }
             
            
              
          /**  
               * 得到當前頁的內容  
               * 
          @return {List}  
               
          */
            
              
          public List<T> getList() {   
                  
          return list;   
              }
             
            
              
          /**  
               * 得到記錄總數  
               * 
          @return {int}  
               
          */
            
              
          public int getTotal() {   
                  
          return total;   
              }
             
            
              
          /**  
               * 得到每頁顯示多少條記錄  
               * 
          @return {int}  
               
          */
            
              
          public int getLimit() {   
                  
          return limit;   
              }
             
            
              
          /**  
               * 得到頁面總數  
               * 
          @return {int}  
               
          */
            
              
          public int getPages() {   
                  
          return pages;   
              }
             
            
              
          /**  
               * 得到當前頁號  
               * 
          @return {int}  
               
          */
            
              
          public int getPageNumber() {   
                  
          return pageNumber;   
              }
             
            
            
              
          /**  
               * 得到所有導航頁號   
               * 
          @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();   
              }
             
          }
          比較實用,轉載
          posted on 2011-02-24 17:32 soken 閱讀(213) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 河曲县| 澄迈县| 和林格尔县| 浙江省| 舞钢市| 卫辉市| 曲阜市| 元江| 内乡县| 阿克苏市| 新乡县| 琼结县| 太仆寺旗| 延津县| 东安县| 高陵县| 留坝县| 丘北县| 定安县| 错那县| 泾阳县| 大冶市| 旌德县| 林西县| 阜康市| 岑溪市| 建德市| 高雄市| 镇康县| 大丰市| 沙雅县| 中牟县| 外汇| 义马市| 漾濞| 镇赉县| 江油市| 博野县| 浦东新区| 内乡县| 忻城县|