我这里有一些用于打印的代码,可以从数组中每页打印一个信息 block 。
double x = pf.getImageableX() + 1;
double y = pf.getImageableY();
double xMax = pf.getImageableWidth();
double yMax = pf.getImageableHeight();
if ((pageIndex < generation.length)) {
//Graphics code
y += (height of index) + 10;
return PAGE_EXISTS;
} else {
return NO_SUCH_PAGE;
}
}
我想让索引不断增加,每页打印更多对象,直到 y 超过 yMax。那时,y 将重置,我可以继续在下一页上打印对象。
然而,print() 方法本身是递归的;因此,如果我尝试引入 for 循环,它只会一遍又一遍地打印相同的条目,直到 (pageIndex < Generation.length)。
当 y > yMax 时,如何打印新页面,同时还能够打印数组中的所有元素?
最佳答案
我不完全理解你的递归是如何工作的。也许看到这些电话会有帮助。
如果此时 pageIndex 代表您所在的页面以及您在数组中的位置,则需要将其拆分。
int page; //what page you are on
int pageIndex; //where the element is on the page
int index; //where you are up to in the array
您将需要另一个案例来了解您是否仍在该页面上或该页面是否已完成。
if ((index < generation.length)) {
//Graphics code
y += (height of pageIndex) + 10;
if(y > yMax){
y = 0;
pageIndex = 0;
page++;
return PAGE_EXISTS;
} else {
pageIndex++;
return PAGE_NOT_FULL;
}
} else {
return NO_SUCH_PAGE;
}
这可能不是您正在寻找的内容,但这是我根据您的代码片段做出的最佳猜测。
关于java - 分页问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10645252/