2012-05-18 4 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; 
} 
} 

Я хочу, чтобы индекс продолжал расти, печатая больше объектов на страницу, пока y не превысит 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

Если я сделаю это, я получаю «отсутствую оператор возврата» ошибка –

+0

Вот вызов методы: 'общественного ИНТ печать (График, PageFormat пф, внутр pageIndex) бросает PrinterException' –

+0

Отсутствующий оператор возврата, вероятно, из первый если. Я отредактировал свой ответ, чтобы дать понять, куда включить NO_SUCH_PAGE – n00begon