江苏520

江苏520

常用链接

统计

最新评论

我的常用分页类

package yourpackage;   
import java.util.ArrayList;   
  
/**  
 * 分页信息  
 * jdk 1.4  
 * 
http://www.bt285.cn 
   
http://www.5a520.cn
 
*/
  
public class PageSet {   
  
    
private int pageSize_default = 20;                                      /* 默认单页信息数量 */  
  
    
private int currentPage_default = 1;                                    /* 默认当前页 */  
  
    
private int pageSize = 20;                                              /* 单页条目 */  
  
    
private int currentPage = 1;                                            /* 当前页 */  
  
    
private int recordCount = 0;                                            /* 信息数量 */  
  
    
private int pageMax = 1;                                                 /* 总页数 */  
  
    
private int startRow = 0;                                               /* 起始列 */  
  
    
private int endRow = 0;                                                 /* 结束列 */  
  
    
private boolean isStartRowReckoned = false;                                 /* 起始列是否被计算 */  
  
  
    
/**  
     * 初始化必有参数  
     * 
@param currentPage  
     * 
@param recordCount  
     
*/
  
    
public void init(int currentPage, int recordCount) {   
        
this.setCurrentPage(currentPage);   
        
this.setRecordCount(recordCount);   
//        this.reckonStartRow();  /* 计算器起始列 */   
//        this.reckonEndRow();   
    }
   
  
    
/**  
     * 重新计算 页面总数 和 当前页  
     
*/
  
    
public void reckonAll() {   
        
this.reckonPageMax();   /* 计算总页数 */  
        
this.reckonCurrentPage(); /* 计算当前页 */  
    }
   
  
    
/**  
     * 计算当前页页码  
     
*/
  
    
public void reckonCurrentPage() {   
        currentPage 
= currentPage <= pageMax ? currentPage : pageMax;   
        currentPage 
= currentPage > 0 ? currentPage : currentPage_default;    /* 默认处理 */  
        currentPage 
= Kitchen.makeObjectConver(String.valueOf(currentPage)).getInt(); // 这个转换要替换成自己的。这个String转int的规则参见Php手册。   
    }
   
  
    
/**  
     * 获取当前页页码  
     * 
@return  
     
*/
  
    
public int getCurrentPage() {   
        
return currentPage;   
    }
   
  
    
/**  
     * 设置当前页页码  
     * 
@param currentPage  
     
*/
  
    
public void setCurrentPage(int currentPage) {   
        
this.currentPage = currentPage;   
    }
   
  
    
/**  
     * 获取默认起始页码  
     * 
@return  
     
*/
  
    
public int getCurrentPage_default() {   
        
return currentPage_default;   
    }
   
  
    
/**  
     * 设置默认起始页码  
     * 
@param currentPage_default  
     
*/
  
    
public void setPageCurrent_default(int currentPage_default) {   
        
this.currentPage_default = currentPage_default;   
    }
   
  
    
/**  
     * 计算页面总数  
     
*/
  
    
public void reckonPageMax() {   
        
boolean isRemainder = ((this.recordCount % this.pageSize) > 0);   
        pageMax 
= Kitchen.makeObjectConver(String.valueOf(this.recordCount / this.pageSize)).getInteger().intValue();   
        
if (isRemainder) {   
            pageMax 
= pageMax + 1;   
        }
   
    }
   
  
    
/**  
     * 获取页面总数  
     * 
@return  
     
*/
  
    
public int getPageMax() {   
        
return pageMax;   
    }
   
  
    
/**  
     * 设定页面总数  
     * 
@param pageMax  
     
*/
  
    
public void setPageMax(int pageMax) {   
        
this.pageMax = pageMax;   
    }
   
  
    
/**  
     * 获取单页显示条数  
     * 
@return  
     
*/
  
    
public int getPageSize() {   
        
return pageSize;   
    }
   
  
    
/**  
     * 设置单页显示条数  
     * 
@param pageSize  
     
*/
  
    
public void setPageSize(int pageSize) {   
        
this.pageSize = pageSize;   
    }
   
  
    
/**  
     * 获取默认页面显示信息条数  
     * 
@return  
     
*/
  
    
public int getPageSize_default() {   
        
return pageSize_default;   
    }
   
  
    
/**  
     * 设置默认页面显示信息条数  
     * 
@param pageSize_default  
     
*/
  
    
public void setPageSize_default(int pageSize_default) {   
        
this.pageSize_default = pageSize_default;   
    }
   
  
    
/**  
     * 设置总记录数  
     * 
@return  
     
*/
  
    
public int getRecordCount() {   
        
return recordCount;   
    }
   
  
    
/**  
     * 获取总记录数  
     * 
@param recordCount  
     
*/
  
    
public void setRecordCount(int recordCount) {   
        
this.recordCount = recordCount;   
    }
   
  
    
/**  
     * 计算当前页起始行行号  
     
*/
  
    
public void reckonStartRow() {   
        
this.reckonAll();   
        isStartRowReckoned 
= true;   
        
int _startRow = this.pageSize * (this.currentPage - 1);   
        _startRow 
= _startRow >= 0 ? _startRow : 0;   
        _startRow 
= Kitchen.makeObjectConver(String.valueOf(_startRow)).getInteger().intValue();   
        
this.startRow = _startRow;   
    }
   
  
    
/**  
     * 获取当前页起始行行号  
     * 
@return  
     
*/
  
    
public int getStartRow() {   
        
this.reckonStartRow();   
        
return this.startRow + 1/* attention */  
    }
   
  
//    public void setStartRow(int startRow) {   
//        this.startRow = startRow;   
//    }   
    /**  
     * 计算当前页结束行行号  
     
*/
  
    
public void reckonEndRow() {   
        
if (!isStartRowReckoned) {   
            
this.reckonStartRow();   
        }
   
        endRow 
= startRow + this.pageSize;   
        endRow 
= endRow <= recordCount ? endRow : recordCount;   
        endRow 
= Kitchen.makeObjectConver(String.valueOf(endRow)).getInteger().intValue();   
    }
   
  
    
/**  
     * 获取当前页结束行行数  
     * 
@return  
     
*/
  
    
public int getEndRow() {   
        
this.reckonEndRow();   
        
return endRow;   
    }
   
  
//    public void setEndRow(int endRow) {   
//        this.endRow = endRow;   
//    }   
    /**  
     * 获取第一页页码  
     * 
@return 1  
     
*/
  
    
public int getFirstPage() {   
        
return 1;   
    }
   
  
    
/**  
     * 获取前一页页码  
     * 
@return  
     
*/
  
    
public int getPrePage() {   
        
int prePage = this.currentPage - 1;   
        prePage 
= (prePage >= 1? prePage : 1;   
        
return prePage;   
    }
   
  
    
/**  
     * 获取下一页页码  
     * 
@return  
     
*/
  
    
public int getNextPage() {   
        
int nextPage = this.currentPage + 1;   
        nextPage 
= (nextPage < this.pageMax) ? nextPage : this.pageMax;   
        
return nextPage;   
    }
   
  
    
/**  
     * 获取最后页页码  
     * 
@see #getPageMax()   
     * 
@return  
     
*/
  
    
public int getLastPage() {   
        
return this.pageMax;   
    }
   
  
    
/**  
     * 获取所有页面列表  
     * 
@return  
     
*/
  
    
public ArrayList getPageList() {   
        
if (!this.isStartRowReckoned) {   
            
this.reckonAll();   
        }
   
        ArrayList pageList 
= new ArrayList();   
        
for (int i = 1; i <= this.pageMax; i++{   
            pageList.add(String.valueOf(i));   
        }
   
        
return pageList;   
    }
   
  
    
/**  
     * 获取临近页面列表  
     * 应急写的,还有很多需要改善的地方  
     * 
@param count  
     * 
@return  
     
*/
  
    
public ArrayList getPageList(int count) {   
        
if (!this.isStartRowReckoned) {   
            
this.reckonAll();   
        }
   
        ArrayList pageList 
= new ArrayList();   
        count 
= ((count % 2> 0? count + 1 : count; /* 轉化為偶數 */  
        
int minPage = this.currentPage - (count / 2);   
        
int startPage = minPage;   
        
int endPage = count + startPage;   
        
int jumper = 0;   
        
boolean isBreak = true;   
//        int distance = 0;   
        
// 雙向逼近   
        do {   
            jumper
++;   
            isBreak 
= true;   
            
/**  
             * 向后走 1 位  
             
*/
  
            
if (startPage < 1{   
                startPage
++;   
                
if (endPage < pageMax) {   
                    endPage
++;   
                }
   
                isBreak 
= false;   
            }
   
            
/**  
             * 向前走 1 位  
             
*/
  
            
if (endPage > pageMax) {   
                endPage
--;   
                
if (startPage > 1{   
                    startPage
--;   
                }
   
                isBreak 
= false;   
            }
   
            
if (jumper > RuntimeConstants.jumper) {   
                isBreak 
= true;   
            }
   
        }
 while (!isBreak);   
        
for (int i = startPage; i <= endPage; i++{   
            pageList.add(Integer.toString(i));   
        }
   
        
return pageList;   
    }
   
  
    
/**  
     * 对比页面索引和当前页并显示相应内容  
     * 
@param index  
     * 
@param show  
     * 
@param elseShow  
     * 
@return  
     
*/
  
    
public String compare(int index, String show, String elseShow) {   
        
if (this.currentPage != index) {   
            show 
= elseShow;   
        }
   
        
return show;   
    }
   
}
  

http://www.feng123.com 这里有例子

posted on 2009-05-13 16:54 江苏520 阅读(1638) 评论(0)  编辑  收藏