2012-05-18 106 views
1

我在這裏有一些代碼用於打印,每頁打印一個數組中的信息塊。分頁問題

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; 
} 
} 

我想有指數不斷增加,打印每頁多個對象,直到ÿ將超過YMAX。此時,y會重置,我可以繼續在下一頁上打印對象。

然而,print()方法本身是遞歸的;所以如果我試圖引入一個for循環,它會一遍又一遍地打印相同的條目,直到(pageIndex < generation.length)。

當y> yMax時,如何打印新頁面,同時還能夠打印數組中的所有元素?

回答

0

我不完全理解你的遞歸如何工作。也許看到電話會有所幫助。

如果此時的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; 
} 

再次這可能不是你要找的,但這是我最好的基於你的片段的猜測。

+0

如果我這樣做,我得到「失蹤return語句」的錯誤 –

+0

這裏是方法調用:'公衆詮釋打印(圖形圖像, 的PageFormat PF,INT的PageIndex) 拋出PrinterException' –

+0

缺少return語句可能是從第一個如果。我已經編輯了我的答案,以明確將NO_SUCH_PAGE包含在哪裏 – n00begon