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
sabrías como puedo centrar la ventana de la configuración de la impresora?-
ResponderEliminarmuchas gracias tu ejemplo. bastante útil XD
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
ResponderEliminarok..muchas gracias. no lo habia pensado de esa forma.. cualquier cosa te aviso.
ResponderEliminarsaludos, jose
pasate por esta actualizacion
ResponderEliminarhttp://jonathan-palomino.blogspot.com/2010/11/centrar-pantalla-de-un-jframe-en-java.html