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

JDialog con el fondo del frame padre

Estas en el tema de JDialog con el fondo del frame padre en el foro de Java en Foros del Web. Buenos días, @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código java: Ver original private void imprimirButtonMouseClicked ( java. awt . event . MouseEvent evt ) {         ...
  #1 (permalink)  
Antiguo 02/09/2010, 01:36
 
Fecha de Ingreso: julio-2010
Mensajes: 104
Antigüedad: 14 años, 4 meses
Puntos: 2
JDialog con el fondo del frame padre

Buenos días,

Código java:
Ver original
  1. private void imprimirButtonMouseClicked(java.awt.event.MouseEvent evt) {                                            
  2.         // IMPRIMIR TABLA
  3.         final JDialog cargaDialogo = new JDialog(getFrame(), "Titulo", true);
  4.  
  5.         JProgressBar dpb = new JProgressBar();
  6.         dpb.setIndeterminate(true);
  7.  
  8.         cargaDialogo.add(dpb);
  9.  
  10.         cargaDialogo.setBackground(Color.red);
  11.  
  12.         cargaDialogo.setSize(300, 75);
  13.  
  14.         cargaDialogo.setLocationRelativeTo(getFrame());
  15.  
  16.         cargaDialogo.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
  17.  
  18.         Thread t = new Thread(new Runnable() {
  19.             public void run() {
  20.                 cargaDialogo.setVisible(true);
  21.             }
  22.         });
  23.  
  24.         t.start();
  25.  
  26.        //TAREA ...
  27.  
  28.         cargaDialogo.setVisible(false);
  29.  
  30.     }


Este código debería mostrarme un jprogressbar, pero lo único que veo es una imagen de 300x75 de la última ventana abierta, ya sea el frame principal, un editor de texto o este mismo tema. Utilizo un skin de substance para la apariencia(lookAndfeel) de mi aplicación.

Un saludo y buen día.

Última edición por ioel10; 02/09/2010 a las 01:44
  #2 (permalink)  
Antiguo 02/09/2010, 05:54
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: JDialog con el fondo del frame padre

Bueno, la tarea la tienes en el mismo método imprimirButtonMouseClicked() que posiblemente llamas directamente al pulsar un botón. Esa llamada java la hace en el hilo que se encarga de pintar ventanas, por lo que hasta que no acabe tu tarea, ese hilo está ocupado y no pintará ventanas, ni hará visibles los progresos del JToolBar ni nada.

Mete la //TAREA... en un hilo separado. No es necesario que el cargaDialog.setVisible(true) lo hagas en otro hilo, ya que eso (la visulización de una ventana debería ejecutarse precisament en el hilo de pintado de ventanas.

Más info en http://chuwiki.chuidiang.org/index.p...El_hilo_de_awt

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 02/09/2010, 09:09
 
Fecha de Ingreso: julio-2010
Mensajes: 104
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: JDialog con el fondo del frame padre

Buenas tardes,

Muchísimas gracias por la respuesta y por el enlace.

He conseguido resolver mi problema del siguiente modo:

Código java:
Ver original
  1. private void imprimirButtonMouseClicked(java.awt.event.MouseEvent evt) {                                            
  2.         final JDialog cargaDialogo = new JDialog(getFrame(), "Imprimiendo ", true);
  3.         final JProgressBar dpb = new JProgressBar(0, 100);
  4.  
  5.         Thread tCarga = new Thread(new Runnable() {    
  6.             public void run() {
  7.                
  8.                 dpb.setIndeterminate(true);
  9.                 dpb.setBackground(Color.LIGHT_GRAY);
  10.                 dpb.setStringPainted(true);
  11.  
  12.                 cargaDialogo.add(dpb);
  13.                 cargaDialogo.setSize(300, 75);
  14.                 cargaDialogo.setLocationRelativeTo(getFrame());
  15.                 cargaDialogo.setVisible(true);
  16.             }
  17.         });
  18.  
  19.         tCarga.start();
  20.  
  21.         Thread t = new Thread(new Runnable() {
  22.             public void run() {
  23.                 //TAREA ...
  24.             }
  25.         });
  26.  
  27.         t.start();
  28.  
  29.     }

Un saludo y buen día.
  #4 (permalink)  
Antiguo 03/09/2010, 22:17
 
Fecha de Ingreso: septiembre-2010
Ubicación: Chiclayo
Mensajes: 17
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: JDialog con el fondo del frame padre

Buenas noches. Tengo una pregunta y agradeceria mucho que me pudieran ayudar. Soy nuevo en Java.
Bueno resulta que cuando importo javax.swing.JOptionPane por ejemplo, puedo sin más emplearla y utilizar sus métodos como showMessageDialog, showInputDialog, etc; pero cuando trabajo con JFrame también importo el paquete javax.swing.JFrame pero además debo heredar de esta clase(JFrame), cosa que no hago cuando trabajo con JOptionPane. Siendo estas clases, JFrame y JOptionPane, dos clases del mismo paquete ¿por qué con una sí debo crear una herencia y con la otra no?
Agradesco su respuesta. Muchas gracias de antemano.
  #5 (permalink)  
Antiguo 04/09/2010, 00:23
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: JDialog con el fondo del frame padre

Hola:

JOptionPane es una clase que tiene métodos estáticos (static), por lo que se les puede llamar directamente así

JOptionPane.showMessage(....);

JFrame es una clase sin métodos estáticos (static), por lo que para usarla debes hacer un new de ella y luego llamar a sus métodos

JFrame ventana = new JFrame();
ventana.setVisible(true);

Otra opción es la que indicas, heredar de ella.

¿Por qué esa diferencia?. JFrame es una clase que representa/es una ventana vacía que tú debes rellenar, mientras que JOptionPane en una clase con métodos útiles para mostrar avisos por pantalla en forma de ventanas predefinidas (aviso, confirmación, error, etc).

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 06/09/2010, 00:22
 
Fecha de Ingreso: julio-2010
Mensajes: 104
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: JDialog con el fondo del frame padre

Buenos días,

Calixhh deberías haber abierto un Nuevo Tema. Es lo suficientemente diferente de la pregunta inicial como para ello.

Un saludo y buen día.

Etiquetas: fondo, jdialog, jframe, substance
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 10:04.