Relatorio + de uma página

Galera desenvolvi um relatório parea um cadastro mas ele não imprime mais de uma página quando mando imprimir todos os cadastrados no banco. Preciso muito que isso funcione, se alguém tiver uma luz. Valews.

O código para a impressão é este:
[/code]//Imprimir
private void btImprimirActionPerformed(java.awt.event.ActionEvent evt) {

PrinterJob job = PrinterJob.getPrinterJob();

PageFormat documentPageFormat = new PageFormat ();
documentPageFormat = job.pageDialog (documentPageFormat);
Book bk = new Book();
bk.append(new Document(), documentPageFormat);
job.setPageable(bk);
if (job.printDialog()) {
try { job.print(); }
catch (Exception exc) { }

}
}

private class Document extends Component implements Printable {
Font fnt = new Font(“Arial”, Font.PLAIN,14); // add Helcio

public int print (Graphics g, PageFormat pageFormat, int page) {

int j = 0;
int count = 0;

if (comboImpres.getSelectedItem().toString() == “A4”) // //Impressão da em A4

for (j=0; j< dados.length; j++)
{

g.dispose();
g.drawString(" NOME:… “+dados[j][4],170,180+count);
g.drawString(” INSTITUIÇÃO:… “+dados[j][5],170,195+count);
g.drawString(” CARGO:… “+dados[j][2],170,210+count);
g.drawString(” ENDEREÇO:… “+dados[j][6],170,225+count);
g.drawString(” BAIRRO:… “+dados[j][7],170,240+count);
g.drawString(” CEP:… “+dados[j][8],170,255+count);
g.drawString(” CIDADE:… “+dados[j][9],170,270+count);
g.drawString(” ESTADO:… “+dados[j][10],170,285+count);
g.drawString(” TELEFONE:… “+dados[j][11],170,300+count);
g.drawString(” PAINEL:… “+dados[j][1],170,315+count);
g.drawString(” GRUPO:… “+dados[j][0],170,330+count);
g.drawString(” E-MAIL:… "+dados[j][12],170,345+count);
count = count + 200;
}
else
if (comboImpres.getSelectedItem().toString() == “Etiqueta”) //Impressão da Etiqueta
for (j=0; j< dados.length; j++){
g.drawString(dados[j][4],210,65+count);
g.drawString(dados[j][2],210,80+count);
g.drawString(dados[j][5],210,95+count);
count = count + 70;
}
//— Validate the page
return (PAGE_EXISTS);
}
}[code]