📄 pager.java
字号:
package ntis.com.util;
import java.util.Vector;
/**<p>
*夵儁乕僕惂屼婡擻傪採嫙偡傞儐乕僥傿儕僥傿僋儔僗丅<br>
*搉偝傟偨擟堄偺峴悢偺暥帤楍傪丄巜掕偝傟偨悢抣偵廬偭偰儁乕僕儞僌偟曐帩偡傞丅
*昗弨揑側巊梡曽朄偼埲壓偺捠傝丅<br>
*<pre>
*丒1儁乕僕偵娷傔傞峴悢傪巜掕偟偰僀儞僗僞儞僗傪惗惉偡傞丅
*丒add儊僜僢僪傪巊梡偟偰丄儁乕僕儞僌傪峴偄偨偄暥帤楍僨乕僞傪1峴偯偮搉偡丅
*丒format儊僜僢僪傪巊梡偟偰丄儁乕僕儞僌傪峴偆丅
*丒getXXX儊僜僢僪傪巊梡偟偰丄儁乕僕儞僌偝傟偨僨乕僞傪庢摼偡傞丅
*</pre>
*format儊僜僢僪傪屇傃弌偟偨捈屻偼丄尰嵼偺儁乕僕偼愭摢儁乕僕偺庤慜偵埵抲晅偗傜傟偰偄傞丅
*傛偭偰getNext儊僜僢僪傪巊梡偡傞偙偲偵傛傝愭摢儁乕僕偺僀儊乕僕偑庢摼偱偒丄
*媡偵getPrior儊僜僢僪傪巊梡偟偨応崌偼椺奜偑憲弌偝傟傞丅
*偙傟偼儁乕僕儞僌偟偨僨乕僞傪愭摢儁乕僕偐傜弴師撉傒弌偟偰偄偔傛偆側張棟傪幚憰偡傞偺偵丄
*桳棙偲側傞傛偆堄恾偟偨堊偱偁傞丅
*偙偺僋儔僗傪巊梡偡傞応崌偼埲忋偺摿惈傪棟夝偟丄師偺惂栺帠崁偵偮偄偰傕棷堄偡傞昁梫偑偁傞丅
*<pre>
*丒1儁乕僕偵娷傔傞峴悢偼丄偙偺僋儔僗傪僀儞僗僞儞僗壔偡傞帪埲奜偵偼巜掕偱偒側偄丅
*丒format儊僜僢僪傪巊梡偟偨屻偵丄add儊僜僢僪傪巊梡偟偰捛壛偟偨暥帤楍偼斀塮偝傟側偄丅
*丒format儊僜僢僪傪巊梡偡傞搙偵丄尰嵼曐帩偟偰偄傞慡儁乕僕僀儊乕僕偑攋婞偝傟傞丅
*</pre>
*</p>*/
public class Pager {
private final String LINES_IS_0 = "The number of lines of a page is 0.";
private final String NO_DATA = "There is no data.";
private final String FIRST_IS_EXCEEDED = "The first page is exceeded.";
private final String LAST_IS_EXCEEDED = "The last page is exceeded.";
private final int FIRST = 0;
private final int LAST = 1;
private final int NEXT = 2;
private final int PRIOR = 3;
private final int CURRENT = 4;
private final int SPECIFICATION = 5;
private int lines = 0;
private int linesOfPage = 0;
private int currentPage = 0;
private Vector datas = new Vector();
private Vector pages = new Vector();
/**<p>
*巜掕偝傟偨峴悢偱儁乕僕惂屼傪峴偆Pager偺僀儞僗僞儞僗傪惗惉偡傞丅<BR>
*堷悢偱搉偝傟偨抣傪1儁乕僕偵娷傔傞峴悢偲偟偰Pager僀儞僗僞儞僗傪惗惉偡傞丅
*堷悢偵0埲壓偺抣偑搉偝傟偨応崌偼丄儊僢僙乕僕偲偟偰"The number of lines of a page is 0."傪
*愝掕偟偨椺奜傪憲弌偡傞丅
*</p>
*@param linesOfPage 1儁乕僕偵娷傔傞峴悢丅
*@throws Exception linesOfPage偺抣偲偟偰0埲壓偺悢抣偑搉偝傟偨応崌丅
*/
public Pager(int linesOfPage) throws Exception {
if(linesOfPage < 1) {throw new Exception(LINES_IS_0);}
this.linesOfPage = linesOfPage;
}
/**<p>
*儁乕僕傪峔惉偡傞暥帤楍傪愝掕偡傞丅<BR>
*堷悢偱搉偝傟偨暥帤楍傪1峴暘偺僨乕僞偲尒側偟丄儁乕僕峔惉偵壛偊傞丅
*杮儊僜僢僪偵搉偝傟偨暥帤楍偼format儊僜僢僪偺屇傃弌偟偵傛傝儁乕僕儞僌偝傟丄
*getXXX儊僜僢僪偵傛傝儁乕僕僀儊乕僕偲偟偰撉傒弌偣傞傛偆偵側傞丅
*</p><p>
*format儊僜僢僪偺屇傃弌偟埲慜偺忬懺偱偼杮儊僜僢僪偵搉偝傟偨暥帤楍偼儁乕僕儞僌偝傟偢丄
*傑偨丄format儊僜僢僪偵傛傝堦扷儁乕僕儞僌偝傟偨傕偺偵怴偨偵暥帤楍傪捛壛偡傞偙偲偼偱偒側偄丅
*format儊僜僢僪偺屇傃弌偟偵傛傝丄偦傟傑偱曐帩偟偰偄偨慡儁乕僕僀儊乕僕偼攋婞偝傟傞丅
*</p>
*@param data 儁乕僕傪峔惉偡傞暥帤楍丅
*/
public void add(String data) {
datas.add(data);
}
/**<p>
*儁乕僕僀儊乕僕傪惗惉偡傞丅<BR>
*add儊僜僢僪偱搉偝傟偨暥帤楍傪曇廤偟丄儁乕僕儞僌傪峴偆丅
*杮儊僜僢僪偺屇傃弌偟屻丄getXXX儊僜僢僪偵傛傝儁乕僕僀儊乕僕偲偟偰撉傒弌偣傞傛偆偵側傞丅
*</p><p>
*杮儊僜僢僪偺屇傃弌偟慜偵丄奺儁乕僕傪峔惉偡傞堊偺僨乕僞偼add儊僜僢僪偵傛傝慡偰搉偟偰偍偔昁梫偑偁傞丅
*堦扷儁乕僕儞僌偑峴傢傟偨屻偱add儊僜僢僪偵傛傝搉偝傟偨僨乕僞偼儁乕僕僀儊乕僕偵捛壛偝傟側偄丅
*杮儊僜僢僪傪嵞傃屇傃弌偟偨屻偱偦傟偼桳岠偵側傞偑丄埲慜偵曐帩偟偰偄偨儁乕僕偼慡偰攋婞偝傟傞丅
*</p>
*/
public void format() {
lines = 0;
while(datas.size() != 0) {
int i = (datas.size() >= linesOfPage) ? linesOfPage : datas.size();
String[] _strings = new String[i];
for(int j = 0; j < i; j++) {
_strings[j] = (String)datas.remove(0);
lines++;
}
pages.add(_strings);
}
}
/**<p>
*尰嵼偺儁乕僕偑愭摢儁乕僕偐偳偆偐傪曉偡丅<BR>
*愭摢儁乕僕偺応崌偼true丄偦偆偱側偄応崌偼false傪曉偡丅
*</p>
*@return 尰嵼偺儁乕僕偑愭摢儁乕僕偐偳偆偐傪帵偡僼儔僌丅
*/
public boolean isFirst() {
if(currentPage == 1) {
return true;
}
else {
return false;
}
}
/**<p>
*尰嵼偺儁乕僕偑嵟廔儁乕僕偐偳偆偐傪曉偡丅<BR>
*嵟廔儁乕僕偺応崌偼true丄偦偆偱側偄応崌偼false傪曉偡丅
*</p>
*@return 尰嵼偺儁乕僕偑嵟廔儁乕僕偐偳偆偐傪帵偡僼儔僌丅
*/
public boolean isLast() {
if(currentPage == pages.size()) {
return true;
}
else {
return false;
}
}
/**<p>憤峴悢傪曉偡丅<BR></p>
*@return 憤峴悢丅*/
public int getLines() {return lines;}
/**<p>1儁乕僕偵娷傑傟傞峴悢傪曉偡丅<BR></p>
*@return 1儁乕僕偵娷傑傟傞峴悢丅*/
public int getLinesOfPage() {return linesOfPage;}
/**<p>尰嵼埵抲晅偗傜傟偰偄傞儁乕僕偺斣崋傪曉偡丅<BR></p>
*@return 尰嵼偺儁乕僕斣崋丅*/
public int getCurrentPageNumber() {return currentPage;}
/**<p>憤儁乕僕悢傪曉偡丅<BR></p>
*@return 憤儁乕僕悢丅*/
public int getMaxPageNumber() {return pages.size();}
/**<p>
*愭摢儁乕僕傪曉偡丅<BR>
*憲弌偝傟傞椺奜偵偮偄偰偼getCurrent儊僜僢僪偺愢柧傪嶲徠偺偙偲丅
*</p>
*@throws Exception 儁乕僕僀儊乕僕偑惗惉偝傟偰偄側偄応崌丅
*@return 愭摢儁乕僕傪峔惉偡傞暥帤楍攝楍丅
*/
public String[] getFirst() throws Exception {return getPage(FIRST);}
/**<p>
*嵟廔儁乕僕傪曉偡丅<BR>
*憲弌偝傟傞椺奜偵偮偄偰偼getCurrent儊僜僢僪偺愢柧傪嶲徠偺偙偲丅
*</p>
*@throws Exception 儁乕僕僀儊乕僕偑惗惉偝傟偰偄側偄応崌丅
*@return 嵟廔儁乕僕傪峔惉偡傞暥帤楍攝楍丅
*/
public String[] getLast() throws Exception {return getPage(LAST);}
/**<p>
*尰嵼埵抲晅偗傜傟偰偄傞儁乕僕偺師偺儁乕僕傪曉偡丅<BR>
*杮儊僜僢僪偺屇傃弌偟偵傛傝丄師偺儁乕僕偑尰嵼埵抲晅偗傜傟偰偄傞儁乕僕偲側傞丅
*憲弌偝傟傞椺奜偵偮偄偰偼getCurrent儊僜僢僪偺愢柧傪嶲徠偺偙偲丅
*</p>
*@throws Exception 儁乕僕僀儊乕僕偑惗惉偝傟偰偄側偄応崌丅
*@throws Exception 尰嵼偺儁乕僕偲偟偰婛偵嵟廔儁乕僕偑埵抲晅偗傜傟偰偄傞応崌丅
*@return 師偺儁乕僕傪峔惉偡傞暥帤楍攝楍丅
*/
public String[] getNext() throws Exception {return getPage(NEXT);}
/**<p>
*尰嵼埵抲晅偗傜傟偰偄傞儁乕僕偺慜偺儁乕僕傪曉偡丅<BR>
*杮儊僜僢僪偺屇傃弌偟偵傛傝丄慜偺儁乕僕偑尰嵼埵抲晅偗傜傟偰偄傞儁乕僕偲側傞丅
*憲弌偝傟傞椺奜偵偮偄偰偼getCurrent儊僜僢僪偺愢柧傪嶲徠偺偙偲丅
*</p>
*@throws Exception 儁乕僕僀儊乕僕偑惗惉偝傟偰偄側偄応崌丅
*@throws Exception 尰嵼偺儁乕僕偲偟偰婛偵愭摢儁乕僕偑埵抲晅偗傜傟偰偄傞応崌丅
*@return 慜偺儁乕僕傪峔惉偡傞暥帤楍攝楍丅
*/
public String[] getPrior() throws Exception {return getPage(PRIOR);}
/**<p>
*尰嵼埵抲晅偗傜傟偰偄傞儁乕僕傪曉偡丅<BR>
*杮儊僜僢僪偺屇傃弌偟偵傛傝椺奜偑憲弌偝傟傞応崌丄憲弌偺棟桼偵傛傝埲壓偵帵偡儊僢僙乕僕偑晅壛偝傟傞丅
*<pre>
*丒儁乕僕僀儊乕僕偑惗惉偝傟偰偄側偄丗"There is no data."
*丒尰嵼偺儁乕僕偲偟偰婛偵愭摢儁乕僕偑埵抲晅偗傜傟偰偄傞丗"The first page is exceeded."
*丒尰嵼偺儁乕僕偲偟偰婛偵嵟廔儁乕僕偑埵抲晅偗傜傟偰偄傞丗"The last page is exceeded."
*</pre>
*</p>
*@throws Exception 儁乕僕僀儊乕僕偑惗惉偝傟偰偄側偄応崌丅
*@throws Exception 尰嵼偺儁乕僕偲偟偰婛偵愭摢儁乕僕偑埵抲晅偗傜傟偰偄傞応崌丅
*@throws Exception 尰嵼偺儁乕僕偲偟偰婛偵嵟廔儁乕僕偑埵抲晅偗傜傟偰偄傞応崌丅
*@return 尰嵼埵抲晅偗傜傟偰偄傞儁乕僕傪峔惉偡傞暥帤楍攝楍丅
*/
public String[] getCurrent() throws Exception {return getPage(CURRENT);}
/**<p>
*堷悢偱巜掕偝傟偨儁乕僕傪曉偡丅<BR>
*杮儊僜僢僪偺屇傃弌偟偵傛傝椺奜偑憲弌偝傟傞応崌丄憲弌偺棟桼偵傛傝埲壓偵帵偡儊僢僙乕僕偑晅壛偝傟傞丅
*<pre>
*丒儁乕僕僀儊乕僕偑惗惉偝傟偰偄側偄丗"There is no data."
*丒梫媮偝傟偨儁乕僕偑愭摢儁乕僕傛傝傕慜丗"The first page is exceeded."
*丒梫媮偝傟偨儁乕僕偑嵟廔儁乕僕傛傝傕屻丗"The last page is exceeded."
*</pre>
*</p>
*@param page 梫媮偡傞儁乕僕丅
*@throws Exception 儁乕僕僀儊乕僕偑惗惉偝傟偰偄側偄応崌丅
*@throws Exception 梫媮偝傟偨儁乕僕偑愭摢儁乕僕傛傝傕慜偺応崌丅
*@throws Exception 梫媮偝傟偨儁乕僕偑嵟廔儁乕僕傛傝傕屻偺応崌丅
*@return 梫媮偝傟偨儁乕僕傪峔惉偡傞暥帤楍攝楍丅
*/
public String[] getPageAt(int page) throws Exception {return getPage(SPECIFICATION, page);}
private String[] getPage(int type) throws Exception {return getPage(type, 0);}
private String[] getPage(int type, int page) throws Exception {
if(pages.size() == 0) {throw new Exception(NO_DATA);}
switch(type) {
case FIRST :
currentPage = 1;
break;
case LAST :
currentPage = pages.size();
break;
case NEXT :
if(currentPage + 1 > pages.size()) {throw new Exception(LAST_IS_EXCEEDED);}
currentPage++;
break;
case PRIOR :
if(currentPage - 1 < 1) {throw new Exception(FIRST_IS_EXCEEDED);}
currentPage--;
break;
case CURRENT :
if(currentPage > pages.size()) {throw new Exception(LAST_IS_EXCEEDED);}
if(currentPage < 1) {throw new Exception(FIRST_IS_EXCEEDED);}
break;
case SPECIFICATION :
if(page > pages.size()) {throw new Exception(LAST_IS_EXCEEDED);}
if(page < 1) {throw new Exception(FIRST_IS_EXCEEDED);}
currentPage = page;
break;
}
return (String[])pages.elementAt(currentPage - 1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -