Imprimiendo un JFrame y sus componentes

He estado trabajando en un programa grande y una de sus funcionalidades debería ser imprimir los contenidos de la ventana principal. Revisé la API y encontré este ejemplo:

http://docs.oracle.com/javase/tutorial/2d/printing/gui.html

fue muy útil, intenté usar ese código en mi programa colocándolo dentro del método de acción de mi botón de impresión:

PrinterJob job = PrinterJob.getPrinterJob();
     job.setPrintable(this);
     boolean ok = job.printDialog();
     if (ok) {
         try {

             job.print();
         } catch (PrinterException ex) {
          /* The job did not successfully complete */
         }
     }

Si hago clic en el botón Imprimir, aparece un cuadro de diálogo de la impresora y cuando le digo que imprima, simplemente imprime un documento en blanco. Sé que el código anterior no es todo lo que necesito, como he visto en los ejemplos de la API, existe un método print (), pero aparentemente nunca lo llaman, por lo que es bastante confuso. He intentado llamar y usarlo muchas veces, pero sin éxito.

Además, creo que cuando finalmente lo haga para imprimir, mi ventana tendrá que imprimirse en la orientación horizontal, incluso puede que necesite un poco de escala. ¿Alguna idea sobre cómo hacer eso?

Me gustaría cualquier ayuda útil para ayudarme a implementar este código con éxito. Sé que debería poder hacerlo solo revisando la documentación (lo he intentado durante casi 2 días) pero no puedo hacerlo funcionar. He aprendido toda la programación que conozco a través de internet. Cualquier ayuda será apreciada.

Respuestas a la pregunta(2)

Su respuesta a la pregunta