En esta entrada os voy a poner un ejemplo de como imprimir una Tabla en vuestra impresora directamente, es muy sencillo así que no tiene muchas florituras.
La salida por la impresora será Un encabezado, la tabla en el cuerpo de la hoja y en el pie el número de página.
public class Principal {
private static JButton btImprimir;
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("com. sun.java.swing.plaf.nimbus. NimbusLookAndFeel");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch ( UnsupportedLookAndFeelExceptio n e) {
e.printStackTrace();
}
JFrame v = new JFrame();
v.setBounds(0,0,835,360);
v.setLayout(null);
v.setVisible(true);
v.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
final String [] columnas = {"NOMBRE", "APELLIDOS", "DNI", "ESTADO", "BLOQUEO", "ALTA"};
final DefaultTableModel dtm = new DefaultTableModel();
final JTable tabla1 = new JTable(dtm);
tabla1. setUpdateSelectionOnSort(true) ;
for (int i=0; i<6; i++){
dtm.addColumn(columnas[i]);
}
tabla1. setPreferredScrollableViewport Size(new Dimension(800,200));
JScrollPane scrollPane = new JScrollPane(tabla1);
v.add(scrollPane);
scrollPane.setBounds(10,10, 800,200);
final Object [] fila2 = {"Carlos", "Mateo Ruiz", "71024121F", "ACTIVO", "0", "2012/02/02"};
final Object [] fila3 = {"Marta", "Perez Hidalgo", "29116227H", "ACTIVO", "1", "2010/21/10"};
dtm.addRow(fila2);
dtm.addRow(fila3);
btImprimir = new JButton("IMPRIMIR");
btImprimir.setBounds(10, 250, 120, 25);
v.add(btImprimir);
btImprimir.addActionListener( new java.awt.event.ActionListener( ) {
public void actionPerformed(java.awt. event.ActionEvent evt) {
try {
// tabla1.print();//envia los datos de la tabla a la impresora
MessageFormat headerFormat = new MessageFormat("Listado de Clientes 2010-2012);
MessageFormat footerFormat = new MessageFormat("- Página {0} -");
tabla.print(PrintMode.FIT_WIDTH, headerFormat, footerFormat);
} catch (PrinterException ex) {
JOptionPane.showMessageDialog(null, "No se ha podido imprimir correctamente, intentalo más tarde.");
}
}
});
v.repaint();
}
excelente..muchas gracias por el aporte.
ResponderEliminarDe nada Herlan, me alegro que te sirviera.
ResponderEliminarUn saludo,
Si el Jtable lo tengo lleno con un resultset como sería el codigo? agradecería tu respuesta
ResponderEliminardebe ser lo mismo, si ya esta llena tu tabla con el resultset se debe de imprimir
Eliminaruna consulta, a mi me aparece la tabla en tamaño que no entra o no se ajusta a la hoja (A4), que puede ser?
ResponderEliminarHola Dario,
ResponderEliminarYo al imprimir me sale todo lo que ocurre es que me sale más pequeño de lo normal. Has probado en A4- horizontal por si la tabla tuviera demasiadas celdas como para mostrarlo?
Puedes compartir tu código o tu proyecto para entender mejor, yo uso NetBeans, gracias por el aporte
ResponderEliminarPuedes compartir tu código o tu proyecto para entender mejor, yo uso NetBeans, gracias por el aporte
ResponderEliminarGracias amigo, nos has salvado ya que lo necesitabamos con mi grupo para un trabajo práctico!:D <3
ResponderEliminarMessageFormat headerFormat = new MessageFormat("Listado de Clientes 2010-2012 " );
ResponderEliminaraqui falta cerrar esta comillas doble "
todo el código funciona perfecto falta solo cerra esa comilla doble
ResponderEliminary agregar el 1
ResponderEliminartabla.print(PrintMode.FIT_WIDTH, headerFormat, footerFormat);
tabla1.print(PrintMode.FIT_WIDTH, headerFormat, footerFormat);
Saludos y gracias por compartir
Como hago para que se ajuste el contenido de la tabla a tamaño carta??
ResponderEliminar