ページングツールクラスPage

3214 ワード

public class Page {
	
	public static int MAX_ROW = 10;
	private int index;
	private int page_num;
	private int total;
	private String url;

	public Page(int index, int total, String url) {
		this.index = index;
		this.total = total;
		this.url = url;
		this.page_num = total%MAX_ROW==0? total/MAX_ROW : total/MAX_ROW+1;
	} 

	public String getFooter() {
		//   
		if(total<=MAX_ROW) {
			return "";
		} 
		StringBuffer sb = new StringBuffer(" :");
		// MAX_ROW 
		if(page_num <= MAX_ROW) {
			for(int i=0; i<page_num; i++) {
				insertTag(sb, i);
			}
			if(index+MAX_ROW < total) {
			insertTag(sb, index+MAX_ROW, " ");
			} else {
				sb.append(" ");
			}
			return sb.toString();
		} else {
			int unit = MAX_ROW * MAX_ROW;
			if(index < unit) {
				int i;
				for(i=0; i<MAX_ROW; i++) {
					insertTag(sb, i);
				}
				String tt = " " + MAX_ROW + " ";
				insertTag(sb, i*MAX_ROW, tt);
				return sb.toString();
			} else {
				// 
				int currentPage = index/MAX_ROW;
				//   MAX_ROW 
				int currentSection = currentPage/MAX_ROW + 1;
				// 
				int lastPage = (currentSection-1) * MAX_ROW - 1;
				// 
				int lastPageRow = lastPage * MAX_ROW;
				// 
				int nextPage = currentSection * MAX_ROW;
				// 
				int nextPageRow = nextPage * MAX_ROW;
				String tt = " " + MAX_ROW + " ";

				insertTag(sb, lastPageRow, tt);
				// 
				if(nextPageRow <= total-1) {
					for(int i=0; i<MAX_ROW; i++) {
						insertTag(sb, i+lastPage + 1);
					}
					tt = " " + MAX_ROW + " ";
					insertTag(sb, nextPageRow, tt);
				} else {
					int lengthOfPage = total - (lastPage + 1) * MAX_ROW;
					lengthOfPage = lengthOfPage/MAX_ROW + 1;
					for(int i=0; i<lengthOfPage; i++) {
						insertTag(sb, i - 1 + lastPage);
					}
				}
				return sb.toString();
			}
		}
	}

	public void insertTag(StringBuffer sb, int num) {
		int temp = index/MAX_ROW;
		if(num==temp) {
			sb.append(num+1).append("  ");
		} else {
			sb.append("<a href=" + url + "&start_index=");
			sb.append(num*MAX_ROW).append(">").append(num+1).append("</a>  ");
		}
	}

	public void insertTag(StringBuffer sb, int num, String str) {
		sb.append("<a href=" + url + "&start_index=");
		sb.append(num).append(">").append(str).append("</a>  ");
	}

	public static void main(String[] args) {
		System.out.println(new Page(120,250,"http://www.g.cn").getFooter());
		// :    : 10  11 12 13 14 15 16 17 18 19 20  10 
	}
}

JAVAページングツールクラス
ページングツールバーは次のように表示されます.
改ページ:上10ページ11 12 13 14 15 16 17 18 20下10ページ