ho guardato un pò in giro e ho trovato il seguente codice... premetto che non capisco cosa fa.. ma sembra funzionare.
ho due richieste? qualcuno mi riesce a spiegare cosa fa , o meglio come avviene l'impostazione della pagina?
secondo: ho il seguente problema, devo stampare un pannello1, di seguiti una jtable, e di seguito un altro pannello2.. come si fa? io ho provato a inviargli il pannello che contiente pannello1+table+pannello2. ma quando la table ha lo scrollpane me la taglia...
grazie

codice:
job = PrinterJob.getPrinterJob();
				PageFormat format = job.defaultPage();
				float pageWidth = MediaSize.ISO.A4.getX(MediaSize.INCH) * 72;
				float pageHeight = MediaSize.ISO.A4.getY(MediaSize.INCH) * 72;
				float margin = (1 / 2.54f) * 72; //1cm
				float margin2 = (1 / 40.08f) * 72; 
				Paper paper = new Paper();
				paper.setSize(pageWidth, pageHeight);
				paper.setImageableArea(margin, margin2, pageWidth - 2 * margin,
				pageHeight - 2 * margin);
				format.setPaper(paper);
				format = job.validatePage(format);
				if(job.printDialog()) {
					try {
					job.setPrintable(new printAction(east), format);
					job.print();
					} catch(PrinterException pe) {
						JOptionPane.showMessageDialog(this, "Errore");
					}
				}
codice:
public class printAction implements Printable {
	 	Component toPrint = null;
	 	
	 	public printAction(Component toPrint) {
	 		this.toPrint = toPrint;
	 	}
	 	
	 	public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
	 		if(pageIndex > 0) {
	 			return NO_SUCH_PAGE;
	 		} else {
	 			Graphics2D g2d = (Graphics2D)g;
	 			g2d.scale(0.52,0.48);
	 			toPrint.printAll(g2d);
	 			return PAGE_EXISTS;
	 		}
	 	}
	 }