¿ya has probado imprimir algo desde un JTable? Porque el JTable tiene un método para imprimir. Imprime exactamente lo mismo que se ve, con los anchos de columnas y todo; es bastante malo por eso de salir con el mismo formato y tamaño de la tabla pero es una solución rápida al querer imprimir. Si no lo has usado, dilo que te paso más o menos los parámetros, etc. que necesitas para hacer funcionar ese método (puedes guiarte con la API como yo lo hice). Otra forma no conozco (no he buscado otra). Importante: he usado este método en la versión 1.5 del JDK (versión estandar), así que no sé si está en versiones más antiguas.