• Domingo 22 de Diciembre de 2024, 07:43

Autor Tema:  Impresoras En Java  (Leído 4073 veces)

maldicion

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Impresoras En Java
« en: Martes 5 de Abril de 2005, 20:57 »
0
mm

fuhrer

  • Miembro MUY activo
  • ***
  • Mensajes: 329
  • Nacionalidad: mx
    • Ver Perfil
    • http://admin.busquenoseninternet.com
Re: Impresoras En Java
« Respuesta #1 en: Martes 5 de Abril de 2005, 23:08 »
0
Hola que tal.

Lo que yo hice y si me funciono fue lo siguiente:
Código: Text
  1.  
  2. private metodoDeTuBoton() {
  3.         PrinterJob printJob = PrinterJob.getPrinterJob();
  4.         printJob.setPrintable(this);
  5.         if (printJob.printDialog()) {
  6.             try {
  7.                 printJob.print();
  8.             } catch (Exception ex) {
  9.                 ex.printStackTrace();
  10.             }
  11.         }
  12.  
  13.  
y luego para la impresión:
Código: Text
  1.  
  2.     public int print(Graphics g, PageFormat pf, int pi) throws PrinterException {
  3.         if (pi >= 1) {
  4.             return Printable.NO_SUCH_PAGE;
  5.         }
  6.         cnv[actual].paint((Graphics2D) g);
  7.         return Printable.PAGE_EXISTS;
  8.     }
  9.  
  10.  
el único cambio que debes hacer es en donde yo pongo cnv[actual] poner el de tu componente y llamar al método que usas para el pintado.
También debes importar estos dos:
Código: Text
  1.  
  2. import java.awt.print.PrinterJob;
  3. import java.awt.print.*;
  4.  
  5.  
Y a tu clase la declaras:
Código: Text
  1.  
  2. class MyJPanel extends JPanel implements Printable{
  3.  
  4.  
Creo eso es todo lo necesario.

Espero haberte ayudado.

Hasta luego.

maldicion

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Impresoras En Java
« Respuesta #2 en: Miércoles 6 de Abril de 2005, 18:13 »
0
mm

fuhrer

  • Miembro MUY activo
  • ***
  • Mensajes: 329
  • Nacionalidad: mx
    • Ver Perfil
    • http://admin.busquenoseninternet.com
Re: Impresoras En Java
« Respuesta #3 en: Jueves 7 de Abril de 2005, 01:52 »
0
Hola de nuevo.

Pues no se si te sirva, o tal vez lo puedes adaptar a lo que necesitas, pero lo que yo hice fué usando Graphics2D, así que lo necesario es:
Código: Text
  1.  
  2. import java.awt.image.*;
  3. import java.awt.geom.*;
  4.  
  5.  

luego haces:
Código: Text
  1.  
  2. Image img = Toolkit.getDefaultToolkit().getImage("ruta/de/tu/imagen/imagen.jpg");
  3. BufferedImage imag = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
  4. Graphics2D imgs = imag.createGraphics();
  5. imgs.drawImage(img,0,0,100,100,null);
  6. g2.setPaint(new TexturePaint(imag, new Rectangle(0,0,100,100)));
  7. g2.fillRect(x,y,x1,y1);
  8.  
  9.  

Con eso te dibuja la imágen dentro del Rectangulo que proporciones, ahora que con esto tambien puedes colocar la imagen dentro de circulos, ovalos, etc, cualquier figura permitida.

Ahi sólo le varias algunas coordenadas que se ajusten a lo que deseas.

Espero te sirva.

Hasta luego.

maldicion

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Impresoras En Java
« Respuesta #4 en: Domingo 10 de Abril de 2005, 00:57 »
0
hola fuhrer:

ya logre que se imprimiera, tanto la imagen como los textos, y me sirvio de mucho tu codigo de la impresora, asi pude reducir un poco mas mi codigo.

ahora quisiera saber como puedo hacer para que los textfield, que reciben los datos, se presentaran de manera centrada, de hecho ya se muestran en la pantalla, pero se salen de la frame interna, estoy utilizando el FlowLayout y el Grid Layout, pero como te digo se salen de las coordenadas de 500, 350, si puedo despues te envio el codigo para que veas que es lo que hace.

GRACIAS POR EL TIP ANTERIOR

fuhrer

  • Miembro MUY activo
  • ***
  • Mensajes: 329
  • Nacionalidad: mx
    • Ver Perfil
    • http://admin.busquenoseninternet.com
Re: Impresoras En Java
« Respuesta #5 en: Domingo 10 de Abril de 2005, 03:53 »
0
Pues para poder colocar lo que quieras sin necesidad de usar algun Layout, puedes usar reshape:

Código: Text
  1.  
  2. class miclase{
  3.        TextField t1;
  4.        Label l1;
  5.        Button b;
  6.  public void init(){
  7.               setLayout(null);
  8.               l1=new Label("Texto: ");
  9.               l1.reshape(300,10,45,25);
  10.               add(l1);
  11.               t=new TextField(2);
  12.               t.reshape(345,10,30,28);
  13.               b=new Button("Texto");
  14.               b.reshape(325,70,50,25);
  15.               add(b);
  16.               }
  17.  
  18.  
como podras ver dentro de reshape van las coordenadas (x,y) de la poscisión de tu componente y coordenadas (x,y) del tamaño de tu componente. y debes poner tu layout como nulo para que te permita hacer esto.

De esta forma es mas facil colocar lo que quieras donde quieras.

Hasta luego.

maldicion

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Impresoras En Java
« Respuesta #6 en: Lunes 18 de Abril de 2005, 19:33 »
0
mm

fuhrer

  • Miembro MUY activo
  • ***
  • Mensajes: 329
  • Nacionalidad: mx
    • Ver Perfil
    • http://admin.busquenoseninternet.com
Re: Impresoras En Java
« Respuesta #7 en: Martes 19 de Abril de 2005, 03:46 »
0
No se si pudieras capturar la imagen que obtienes para ver mas o menos lo que ocurre.

Y sobre esos errores que ter marca, es normal, solo son warnings y no hay problema por ellos.

maldicion

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Impresoras En Java
« Respuesta #8 en: Martes 19 de Abril de 2005, 20:40 »
0
bueno, la imagen te la mando mas al rato que llegue a la casa, pero lo que hace es que los coampos de texto, aparecen demasiadas veces,es decir si minimizas y maximizas la pantalla van apareciendo mas, y no se por que es.

ademas, cuando mando los datos a la impresora y le digo que

g.drawString("nombre"+t1.getText(),....);

imprime unicamente nombre y no lo del getText. y no se por que , la funcion de envio de datos a mysql sy los obtiene asi y los guarda en la bd.

AUXILIO!!!!!

GRACIAS DE ANTEMANO