Foros del Web » Programación para mayores de 30 ;) » Java »

problemas con el dialogo de impresión

Estas en el tema de problemas con el dialogo de impresión en el foro de Java en Foros del Web. Hola a todos, Tengo una aplicación en la que quiero implementar el botón imprimir. Lo estoy haciendo mediante la clase PrinterJob y tengo el siguiente ...
  #1 (permalink)  
Antiguo 12/02/2008, 08:26
 
Fecha de Ingreso: abril-2007
Mensajes: 34
Antigüedad: 17 años
Puntos: 0
problemas con el dialogo de impresión

Hola a todos,

Tengo una aplicación en la que quiero implementar el botón imprimir. Lo estoy haciendo mediante la clase PrinterJob y tengo el siguiente problema:

Si le paso todos los parámetros por código (configuración de las páginas,...) y luego hago:

pJ.print();

funciona sin ningún problema. Pero yo lo que quiero es que salga el típico dialogo de impresión. Para ello el código es el siguiente:

pJ.printDialog();

Pero este dialogo no es modal, se abre tras el frame principal de la aplicación y no hay forma de poder acceder a él.

Lo que me gustaría es saber:

- si se puede hacer este dialgo modal para que se ejecute delante del frame principal y no detrás.

- si hay otra clase que implemente el dialogo de impresión estándar.

Muchas gracias a todos por adelantado.

NOTA: no sé si os servirá pero he encontrado documentación de java que se reconoce esto como un bug. Tiene fecha del 2000 por lo que supongo que ya se habrá desarrollado alguna solución pero no la encuentro por ningún lado.

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4273333
  #2 (permalink)  
Antiguo 13/02/2008, 11:40
Avatar de zempox  
Fecha de Ingreso: mayo-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 1
Re: problemas con el dialogo de impresión

Saludos, mira si esta ventana no es un dialogo, entonces es un Frame si es un Frame tiene la propiedad SetAlwaysOnTop, asignale true para que la ventana se muestre adelante del otro Frame.

MiVentana.setAlwaysOnTop(true);

y esto debe hacer que tu ventana printJob se muestre adelante , espero te sirva.


http://javazempox.blogs.peru.com/
  #3 (permalink)  
Antiguo 14/02/2008, 05:53
 
Fecha de Ingreso: abril-2007
Mensajes: 34
Antigüedad: 17 años
Puntos: 0
Re: problemas con el dialogo de impresión

Hola,

Gracias por responder.

El printerJob.printDialog() es un dialogo implementado por java, como el showOpenDialog.

Lo único que este último si se puede poner como modal y el de la impresora no. Encima te devuelve true o false según haya pulsado el usuario Aceptar o Cancelar por lo que si le pones un "." al final, te aparecen los métodos de los boolenos.

¿Hay alguien que haya conseguido poner el dialogo de impresion modal?

Muchas gracias.
  #4 (permalink)  
Antiguo 14/02/2008, 12:25
Avatar de zempox  
Fecha de Ingreso: mayo-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 1
Re: problemas con el dialogo de impresión

Hola estuve haciendo algunas pruebas con el PrinterJob e hice esta clase extendiendo JFrame, llamo al pjob.printDialog() y este si es modal ya que una vez ejecutado no pierde el foco hasta q lo cierras, ahora ya quedaria ponerle el código en el boton imprimir al que te refieres. Ejecutalo para que veas aqui si funciona.

import java.awt.Dimension;
import java.awt.print.*;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class PruebaPrint extends JFrame {

PrinterJob pjob;

public PruebaPrint(){
pjob = PrinterJob.getPrinterJob();
Dimension d = new Dimension();
d.height = 600;
d.width = 800;

this.setPreferredSize(d);
this.pack();
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CL OSE);
this.setVisible(true);
if(pjob.printDialog()==true){
JOptionPane.showMessageDialog(null, "YEEE");
}
}


public static void main (String args[]){
PruebaPrint aplicacion = new PruebaPrint();

}

}

Espero te sirva .. saludos

http://javazempox.blogs.peru.com/
  #5 (permalink)  
Antiguo 15/02/2008, 01:11
 
Fecha de Ingreso: abril-2007
Mensajes: 34
Antigüedad: 17 años
Puntos: 0
Re: problemas con el dialogo de impresión

Hola

Primero, muchas gracias por responder.

He puesto tu código y lo que pasa es lo siguiente:

El FramePrincipal genera el frame modal PruebaPrint, y éste genera el dialogo de impresion no modal, con lo que sigo igual que antes.

¿A ti te pasa esto?

Otra vez, muchas gracias por tu ayuda.
  #6 (permalink)  
Antiguo 15/02/2008, 05:58
 
Fecha de Ingreso: abril-2007
Mensajes: 34
Antigüedad: 17 años
Puntos: 0
Re: problemas con el dialogo de impresión

Hola a todos,

He conseguido hacer lo que proponía (o casi). les comento cómo lo conseguí por si alguien está buscando soluciones para un problema similar.

La solución ha sido parecida a la que me recomendaron en el post anterior.

Tenía un frame principal FP que era sobre el que corría la aplicación, entonces lo que he hecho ha sido crear un FrameImpresora que lo único que hace en el main es llamar a un método que oculta este frame antes de llamar al dialogo de impresion del PrinterJob.

Una vez la aplicacion sale del dialogo de impresión, se hace

FrameImpresora.setVisible(false);

y para el usuario nunca existe este frame y se simula bastante bien que el dialogo de impresión es modal.

Muchas gracias a todos por su ayuda.

Hasta otra!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:54.