Abrir un JDialog desde otro JDialog

¿Quisiera saber si es posible llamar un JDialog desde otro JDialog? Estoy haciendo un programa en NetBeans donde tengo un JFrame (ventana padre) desde el cual se llama un JDialog (ventana hija), pero necesito que al presionar un botón desde este JDialog, ¿se abra uno nuevo que tenga como padre al primer JDialog?
¿O no sé si existe alguna otra forma de abrir una tercer ventana que dependa del JDialog?

3 Respuestas

Respuesta
1
Te recomiendo algo más simple, en vez de usar el JDialog usa el JFrame, esta al costadito del Dialog en Swing Windows, puedes poner varios frames (no hay relación de padres a hijos) el único principal es la clase, ya que los JFrame se crean como componentes dentro de la clase, estos funcionan con un Frame normal, y así los cambias como deseas agregándole la visibilidad true o false, y puedes poner botones y todo lo que quieras y programas para que un botón determinado abra otro frame.
Si deseas te puedo mandar a tu mail un ejemplo sencillo de como hacerlo.
Si no te interesara lo de los JFrame el JDialog se maneja también por las vistas de
this.jDialog1.setVisible(true); o this.jDialog1.setVisible(false);
Olvidate de los padres de hijos, si tienes un botón en el dialog que dice abrir nuevo dialogo, solo le pones en el código del botón
this.NOMBRE_DIALOGO_SUPUESTAMENTE_PADRE.setVisible(false); y para hacer aparecer al hijo
this.NOMBRE_DIALOGO_SUPUESTAMENTE_HIJO.setVisible(true).
Cualquier duda pásame la voz, estoy para ayudar
Bueno, tenía entendido que en un programa solo podía haber un JFrame; lo demás debían ser JDialogs, de ahí el interés de abrir otro JDialog.
El asunto es que requiero que el segundo JDialog sea abierto desde el primero de manera modal, y no desde el JFrame.
Lo que yo estaba haciendo era lo siguiente. Agregué una nueva clase con el segundo JDIalog. Aquí le agregue los componentes que ocupaba. Luego en el botón del primer JDialog que uso para abrir el segundo, puse el siguiente código:
JDialog dialogo2 = new JDialog(new JDialog1(), true)
dialogo2.setVisible(true);
El programa efectivamente me abre un JDialog, pero me sale todo en gris, no aparece ningún componente de los que puse. Además, tengo que cambiarle el tamaño manualmente, ya que solo aparece la barra de titulo, como si estuviera minimizado.
No sé si he podido explicar un poco mejor el inconveniente que tengo. De igual manera me interesaría ver el ejemplo que mencionas.
Gracias!
En una clase puede haber más de un JFrame, pero el principal es el que se va a abrir, los demás están agregados simplemente como otro componente, así como un label o un combobox, y efectivamente hay que darle el tamaño mediante código ya que por default aparecen con ancho y largo de cero.
La comunicación entre todos los JFrame que quieras tener deben ser dentro de la misma clase para evitar dependencia y mucho código, simplemente dentro de una misma clase se hace todo bonito y sin ningún problema.
Al decir problema me refiero a esto JDialog dialogo2 = new JDialog(new JDialog1(), true);
Con un ejemplo le va a quedar clarísimo y si entendí muy bien a lo que se refiere, pero como no le voy a pegar aquí muchas lineas de código ya que seria muy complicado, prefiero que ud en su próxima respuesta me proporcione su e-mail para mandarle un proyecto java.
El proyecto java que voy a crear va a tener solo 1 clase con todo ahí adentro, de manera ordenada y entendible, ya que solo se debe comunicar parámetros o datos entre clases, no frames, es más recomendable.
Bueno el proyecto tendrá 5 frames, 4 frames y el principal que carga por defecto.
Espero su correo para mandarle el ejemplo, se lo mando hoy en la noche porque tengo un compromiso y estoy saliendo en ese momento.
Muchas gracias, te lo agradezco.
Mi correo es [email protected]
Saludos.
Listo, acabo de mandarte a tu mail el ejemplo que te prometí, disculpa por no poder mandártelo ayer pero recién hoy llegue a mi casa hace un rato je je.
Espero te guste y te aclare las ideas cualquier inquietud estoy para ayudar.
Respuesta

Acabo de leer los comentarios y tengo las mismas dudas si me podrías mandar por favor el ejemplo te lo agradeceré.

Respuesta

https://www.youtube.com/watch?v=lQi2xoX7HUw https://www.youtube.com/watch?v=lQi2xoX7HUw 

Aquí este maestro lo resuelve facilisimo

Simplemente modifica la clase del jdialog nieto para que en vez de pedir un frame pida un jdialog el cambio se hace en el constructor y en el main y listo

El mi quedo asi: y si fuka

public class NoCedula extends javax.swing.JDialog {

public NoCedula(javax.swing.JDialog parent, boolean modal) {

super(parent, modal);
initComponents();
setLocationRelativeTo(null);
}//</editor-fold>

java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
NoCedula dialog = new NoCedula(new javax.swing.JDialog(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas