Colocar Cuadro de Dialogo en cima de JDialog

Iniciado por soy_nicanor, 19 Febrero 2015, 03:15 AM

0 Miembros y 1 Visitante están viendo este tema.

soy_nicanor

Le llamo cuadro de dialogo desde JDialog por un boton.

Llamo con el siguiente de código:

Código (java) [Seleccionar]

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        jDialog1.setMinimumSize(new Dimension (600, 300));
        jDialog1.setLocationRelativeTo(this);
        jDialog1.setVisible(true);
        jDialog1.setModal(true);       
    }   



El problema es que el cuadro de dialogo se ubica en atrás de JDialog.



3n31ch

Esto de utilizar el diseño de Netbeans... no me gusta nada.  :xD

Solo quieres que el JDialog este en frente del anterior no?

Código (java) [Seleccionar]
this.jDialog1.setAlwaysOnTop(true);

Con debería ser suficiente.

Pero seguramente tengas otro problema, porque a mi me huele que el JDialog que creas desde el otro JDialog estará bloqueado hasta cerrar el primero.

(Tengo entendió que llamar un JDialog de otro JDialog era una mala practica, pero no estoy seguro)

Suerte y dime si te funciona.

soy_nicanor

#2
Gracias Nac-ho
Si me pone delante de JDialog pero me tiene bloqueado, No puedo manipular el cuadro de dialogo, mucho menos me permite cerrar



Usuario Invitado

Hola,

El propósito de un JDialog es el ser una ventana auxiliar, que permita añadir comportamiento a una ventana base. Es una buena práctica que una ventana de diálogo bloquee el elemento padre, es lo normal. Si decimos que un JDialog tiene un padre es que depende de él. Si decides abrir un JDialog es porque obligatoriamente necesitas hacer X cosas antes de continuar trabajando con el padre.

Una aplicación swing, como norma general debe contener un solo JFrame y las demás ventanas deben ser JDialog. Por ejemplo, si muestras un anuncio cuando se está registrando una venta, lo normal es que ese anuncio bloquee el elemento padre, una vez que se cierra el anuncio se puede proseguir con la venta.

Para colocarle un padre a un JDialog:

Código (java) [Seleccionar]
JDialog dialog = new JDialog(frame);

He puesto de padre a un JFrame pero también puede ser otro JDialog.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

3n31ch

#4
Cita de: Nac-ho en 19 Febrero 2015, 03:52 AM
Pero seguramente tengas otro problema, porque a mi me huele que el JDialog que creas desde el otro JDialog estará bloqueado hasta cerrar el primero.

:O Vi el futuro!, soy  todo un adivino.

Pues si, mira yo te explicare el problema: USAS EL DISEÑO DE NETBEANS.

Primero al juzgar el porque no pudiste encontrar el problema apenas se presento me da a entender que realmente no entiendes como funciona siwng ni awt. Normal... seguramente aprendiste a hacer esto utilizando netbeans. No lo digo de mala manera, pero en serio recomiendo, al aprender NUNCA usar estas herramientas, luego cuando estés trabajando y tengas poco tiempo para hacer cosas las puedes usar (Aun asi no las recomiendo, crean mucho código inmantenible)

La anterior respuesta vino con truco, ya sabia que eso te pasaría apenas lei tu pregunta básicamente esto te paso porque tu nuevo JDialog no tiene como parent el JDialog anterior (tal como dijo Gus).

Quita lo que te pase anteriormente para poner el JDialog en frente y solucionalo de esta manera:

(Tuve que darme vuelta por la plataforma para saber como hacerlo .)

En la vista de diseño selecciona el JDialog que agregaste (en el navegador de componentes agregados veras una carpeta que dice Otros componentes, ahí esta tu JDialog).

Una vez seleccionado, en la ventana de propiedades del elemento ve a la pestaña code, y posterior a esto modifica en donde dice Custom Creation Code  (Personalizar codigo de creacion, realmente no se como se llame en netbeans español). En la ventana que se te abrirá pon lo siguiente:

Código (java) [Seleccionar]
new javax.swing.JDialog(this);

De esta manera pasaras el JDialog padre como parent del Nuevo JDialog, y se hara lo que necesitas.

Otra forma de hacerlo (seria un poco menos optima)

Seria que modifiques tu evento del boton y hagas lo siguiente:

Código (java) [Seleccionar]
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
       jDialog1 = new javax.swing.JDialog(this);                                      
       jDialog1.setMinimumSize(new Dimension (600, 300));
       jDialog1.setLocationRelativeTo(this);
       jDialog1.setVisible(true);
       jDialog1.setModal(true);
}        


Saludos. Cualquier duda preguntas.  :P

soy_nicanor

Muy agradecido, Me han despejado muchas cosas, Gracias.