jueves, 19 de agosto de 2010

Trabajos de Impresion

Cuantas veces no hemos querido imprimir algun texto generado por un programa para un reporte simple pues con este ejemplo lo podran hacer.
Consta de 2 clases y usaremos PrinterJob.
Para este caso digitaremos un texto y cuando le demos al boton imprimir saldra el texto en papel hacia la impresora predeterminada.

Clase Impresora
package Imprimir;
/**
*
* @author JONATHAN
*/
/********************************************************************
* El siguiente programa es un ejemplo bastante sencillo de *
* impresion con JAVA. *
********************************************************************/
import java.awt.*;
/********************************************************************
* La siguiente clase llamada "Impresora", es la encargada de *
* establecer la fuente con que se va a imprimir, de obtener el *
* trabajo de impresion, la página. En esta clase hay un metodo *
* llamado imprimir, el cual recibe una cadena y la imprime. *
********************************************************************/
class Impresora {
Font fuente = new Font("Dialog", Font.PLAIN, 10);
PrintJob trabajo_impresion;
Graphics pagina;
/********************************************************************
* A continuacion el constructor de la clase. Aqui lo unico que *
* hago es tomar un objeto de impresion. *
********************************************************************/
Impresora() {
trabajo_impresion = Toolkit.getDefaultToolkit().getPrintJob(new Frame(), "Desde Java", null);
}
/********************************************************************
* A continuacion el metodo "imprimir(String)", el encargado de *
* colocar en el objeto grafico la cadena que se le pasa como *
* parámetro y se imprime. *
********************************************************************/
public void imprimir(String Cadena) {
//LO COLOCO EN UN try/catch PORQUE PUEDEN CANCELAR LA IMPRESION
try {
pagina = trabajo_impresion.getGraphics();
pagina.setFont(fuente);
pagina.setColor(Color.black);
pagina.drawString(Cadena, 60, 60);
pagina.dispose();
trabajo_impresion.end();
} catch (Exception e) {
System.out.println("LA IMPRESION HA SIDO CANCELADA...");
}
}//FIN DEL PROCEDIMIENTO imprimir(String...)
}//FIN DE LA CLASE Impresora

Ahora con la Clase principal.



package Imprimir;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
/**
*
* @author JONATHAN
*/
//A CONTINUACION LA CLASE PRINCIPAL
public class Programa_Impresion extends JFrame {
String cadena;
JTextField campo;
JButton imprimir;
JLabel info;
Impresora impresion;
JPanel principal = new JPanel(new BorderLayout());
JPanel etiq = new JPanel(new FlowLayout());
JPanel dos = new JPanel(new FlowLayout());
//CONSTRUCTOR DE LA CLASE
Programa_Impresion() {
super("Muestra Simple de Impresión en JAVA...");
info = new JLabel("ESCRIBA ALGO EN EL CAMPO Y HAGA CLIC EN IMPRIMIR...");
cadena = new String();
campo = new JTextField(30);
imprimir = new JButton("IMPRIMIR");
dos.add(campo);
dos.add(imprimir);
etiq.add(info);
campo.setToolTipText("ESCRIBA ALGO AQUÍ...");
imprimir.setToolTipText("CLIC AQUI PARA IMPRIMIR...");
principal.add(etiq, BorderLayout.NORTH);
principal.add(dos, BorderLayout.CENTER);
getContentPane().add(principal);
//AJUSTO EL TAMAÑO DE LA VENTANA AL MINIMO
pack();
//NO PERMITO QUE PUEDAN CAMBIAR EL TAMAÑO DE LA VENTANA
this.setResizable(false);
//AHORA LA CENTRARA EN LA PANTALLA
Dimension pantalla, cuadro;
pantalla = Toolkit.getDefaultToolkit().getScreenSize();
cuadro = this.getSize();
this.setLocation(((pantalla.width - cuadro.width) / 2),
(pantalla.height - cuadro.height) / 2);

//LE AGREGAMOS EL EVENTO AL BOTON "imprimir"
imprimir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
cadena = "";
cadena = String.valueOf(campo.getText());
if (!cadena.equals("")) {
impresion = new Impresora();//Instanciamos clase y se la mandamos al metodo imprimir
impresion.imprimir(cadena);
} else {
System.out.println("NO SE IMPRIME NADA EN BLANCO...");
}
campo.requestFocus();
campo.select(0, cadena.length());
}
});


}//FIN DEL CONSTRUCTOR
public static void main(String jm[]) {
Programa_Impresion p = new Programa_Impresion();//Instanciamos clase
p.show();
p.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
}//FIN DEL MAIN
}//FIN DE LA CLASE PRINCIPAL

Como se daran cuenta instanciaremos la clase Impresora y le pasaremosmediante un metodo la cadena a imprimir ahora esto no se queda asi, lo pueden exterder osea lo que iria en el metodo podria ser algo mas grande.

Se los dejo a su imaginacion
Reacciones:

4 comentarios:

  1. sabrías como puedo centrar la ventana de la configuración de la impresora?-
    muchas gracias tu ejemplo. bastante útil XD

    ResponderEliminar
  2. Bueno el centrarlo lo puedes hacer de múltiples maneras una es llamando al tamaño de la pantalla con getY y getX dividiéndolo sobre 2 y pasárselo a setPreferredSize(Dimensión) donde Dimensión es un objeto donde pondrás las coordenadas

    ResponderEliminar
  3. ok..muchas gracias. no lo habia pensado de esa forma.. cualquier cosa te aviso.
    saludos, jose

    ResponderEliminar
  4. pasate por esta actualizacion
    http://jonathan-palomino.blogspot.com/2010/11/centrar-pantalla-de-un-jframe-en-java.html

    ResponderEliminar