/********************************************************************
* El siguiente programa es un ejemplo bastante sencillo de *
* impresión con JAVA. *
********************************************************************/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/********************************************************************
* 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 método *
* llamado imprimir, el cual recibe una cadena y la imprime. *
********************************************************************/
class Impresora
{
Font fuente = new Font("Dialog", Font.PLAIN, 10);
PrintJob pj;
Graphics pagina;
/********************************************************************
* A continuación el constructor de la clase. Aquí lo único que *
* hago es tomar un objeto de impresion. *
********************************************************************/
Impresora()
{
pj = Toolkit.getDefaultToolkit().getPrintJob(new Frame(), "SCAT", null);
}
/********************************************************************
* A continuación el método "imprimir(String)", el encargado de *
* colocar en el objeto gráfico 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 = pj.getGraphics();
pagina.setFont(fuente);
pagina.setColor(Color.black);
pagina.drawString(Cadena, 60, 60);
pagina.dispose();
pj.end();
}catch(Exception e)
{
System.out.println("LA IMPRESION HA SIDO CANCELADA...");
}
}//FIN DEL PROCEDIMIENTO imprimir(String...)
}//FIN DE LA CLASE Impresora
//A CONTINUACION LA CLASE PRINCIPAL
public class Programa extends JFrame
{
String cadena;
JTextField campo;
JButton imprimir;
JLabel info;
Impresora imp;
JPanel principal = new JPanel(new BorderLayout());
JPanel etiq = new JPanel(new FlowLayout());
JPanel dos = new JPanel(new FlowLayout());
//CONSTRUCTOR DE LA CLASE
Programa()
{
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 CENTRARÉ 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(""))
{
imp = new Impresora();
imp.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 p = new Programa();
p.show();
p.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
{
System.exit(0);
}
});
}//FIN DEL MAIN
}//FIN DE LA CLASE PRINCIPAL
Comentarios sobre la versión: Versión 1 (39)
No puedo hacer funcionar este programa; si alguien me puede ayudar, se lo agradeceré. se compila todo junto o por partes, cuales serían ?
Gracias
"abres un archivo txt y lo carga en un jTextArea y lo imprime"
/****************************************************************/
/* Imprime */
/* */
/****************************************************************/
package imprime;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
/**
* Summary description for Imprime
*
*/
public class Imprime extends JFrame
{
// Variables declaration
private JLabel jLabel1;
private JTextArea jTextArea1;
private JScrollPane jScrollPane1;
private JButton jButAbrir;
private JButton jButImprime;
private JPanel contentPane;
// End of variables declaration
public Imprime()
{
super();
initializeComponent();
this.setVisible(true);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always regenerated
* by the Windows Form Designer. Otherwise, retrieving design might not work properly.
* Tip: If you must revise this method, please backup this GUI file for JFrameBuilder
* to retrieve your design properly in future, before revising this method.
*/
private void initializeComponent()
{
jLabel1 = new JLabel();
jTextArea1 = new JTextArea();
jScrollPane1 = new JScrollPane();
jButAbrir = new JButton();
jButImprime = new JButton();
contentPane = (JPanel)this.getContentPane();
//
// jLabel1
//
jLabel1.setText("Archivo:");
//
// jTextArea1
//
//
// jScrollPane1
//
jScrollPane1.setViewportView(jTextArea1);
//
// jButAbrir
//
jButAbrir.setHorizontalTextPosition(SwingConstants.CENTER);
jButAbrir.setIcon(new ImageIcon("buscar.PNG"));
jButAbrir.setText("Abrir");
jButAbrir.setToolTipText("Abrir");
jButAbrir.setVerticalAlignment(SwingConstants.TOP);
jButAbrir.setVerticalTextPosition(SwingConstants.BOTTOM);
jButAbrir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
jButAbrir_actionPerformed(e);
}
});
//
// jButImprime
//
jButImprime.setHorizontalTextPosition(SwingConstants.CENTER);
jButImprime.setIcon(new ImageIcon("Imprime.PNG"));
jButImprime.setText("Imprimir");
jButImprime.setToolTipText("Imprimir");
jButImprime.setVerticalAlignment(SwingConstants.TOP);
jButImprime.setVerticalTextPosition(SwingConstants.BOTTOM);
jButImprime.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
jButImprime_actionPerformed(e);
}
});
//
// contentPane
//
contentPane.setLayout(null);
addComponent(contentPane, jLabel1, 14,19,487,18);
addComponent(contentPane, jScrollPane1, 14,44,486,230);
addComponent(contentPane, jButAbrir, 126,285,90,80);
addComponent(contentPane, jButImprime, 296,285,90,80);
//
// Imprime
//
this.setTitle("Impresion de Archivos TXT");
this.setLocation(new Point(280, 170));
this.setSize(new Dimension(524, 411));
}
/** Add Component Without a Layout Manager (Absolute Positioning) */
private void addComponent(Container container,Component c,int x,int y,int width,int height)
{
c.setBounds(x,y,width,height);
container.add(c);
}
private void jButAbrir_actionPerformed(ActionEvent e)
{
System.out.println("\njButAbrir_actionPerformed(ActionEvent e) called.");
//------------------------------
//Aqui permites escoger un txt para ponerlo en jtextarea
int state;
String msg;
FileDialog file = new FileDialog (Imprime.this, "Load File", FileDialog.LOAD);
file.setFile ("*.txt");
file.show();
String curFile;
if ((curFile = file.getFile()) != null)
{
String filename = file.getDirectory() + curFile;
char[] data;
setCursor (Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
File f = new File (filename);
try
{
FileReader fin = new FileReader (f);
int filesize = (int)f.length();
data = new char[filesize];
fin.read (data, 0, filesize);
}
catch (FileNotFoundException exc)
{
String errorString = "No se Encontro Archivo: " + filename;
data = errorString.toCharArray ();
}
catch (IOException exc)
{
String errorString = "Tipo de Error: " + filename;
data = errorString.toCharArray ();
}
jLabel1.setText ("Archivo: " + filename);
jTextArea1.setText (new String (data));
setCursor (Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
//------------------------------
}
private void jButImprime_actionPerformed(ActionEvent e)
{
System.out.println("\njButImprime_actionPerformed(ActionEvent e) called.");
//------------------------------
// Escoger tipo modelo y etc de fuente para ponerlo en una sola variable
String family = "Serif";
int style = Font.PLAIN;
int size = 20;
Font fuente = new Font(family, style, size);
//Terminacion de fuente
Properties defaultProps = new Properties();
PrintJob print=Toolkit.getDefaultToolkit().getPrintJob(this,"Imprimir",defaultProps);
Graphics g=print.getGraphics();
if(g!=null)
{
jTextArea1.printAll(g);
}
g.dispose();
print.end();
//------------------------------
}
//============================= Testing ================================//
//= =//
//= The following main method is just for testing this class you built.=//
//= After testing,you may simply delete it. =//
//======================================================================//
public static void main(String[] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
try
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}
catch (Exception ex)
{
System.out.println("Failed loading L&F: ");
System.out.println(ex);
}
new Imprime();
}
//= End of Testing =
}
¿cómo imprimirias los saltos de linea?
Un saludo!
ojala alguien tenga una respuesta....
¿Hay alguna manera de hacerlo?
He hecho una aplicación de escritorio en Java, y requiere imprimir recibos de cobro por cada persona de la Base de Datos:
¿Se puede hacer con este método ?, controlar cada linea del recibo,etc?
Agradezco de antemano cualquier sugerencia y estoy dispuesto a abonar la idea que me resuelva el problema
con una persona como tú que entiende muy bien el tema.
Atentamente,
Domingo
estoy trabajndo con una impresora de tickets termica de 80 mm a que se debe que lo imprime en blanco
cual quier ayuda te la agradeceria
Estuve HORAS Y HORAS Y MAS HORAS! Realmente ya me habia dado por vencido y este era el ultimo intento y gracias a ti consegui lo que estaba buscando, una impresion simple, pues con eso abria un cashDrawer (cajon de dinero)