Tengo un diálogo de configuración modal que es un JDialog. En esta ventana de configuración, coloqué algunos componentes, incluido un botón, en otro cuadro de diálogo de configuración modal que también es un JDialog. Los hice JDialogs porque esa es la única forma que conozco de hacer un diálogo modal.Cómo crear un JDialog modal encima de otro modal JDialog
El problema es este: cuando creo el diálogo de configuración principal, tengo que construir el JDialog sin un Marco padre o con un Marco padre. Como mi ventana principal es un JFrame, puedo pasar eso al constructor del diálogo de configuración principal. Pero cuando quiero crear el segundo cuadro de diálogo de configuración modal que debe tener el diálogo de configuración principal como primario, no puedo encontrar una forma de obtener el Marco (J) del JDialog. Quiero pasar ese diálogo de configuración principal como padre para que el segundo diálogo de configuración se centre en él cuando se muestre. Supongamos que el segundo cuadro de diálogo de configuración no tiene un constructor para pasar una ubicación, solo los constructores de JDialog.
¿Hay alguna manera de obtener el marco (J) de un JDialog? ¿Existe un error de diseño en mi configuración y debería haber usado algo más para estos cuadros de diálogo de configuración? (Y si es así, ¿cómo debo realizar estos ajustes alternativos diálogos modales?)
Gracias por su ayuda, Erik
ACTUALIZACIÓN: Gracias a todos por sus respuestas. Me llevaron a entender que aparentemente no es absolutamente necesario tener un propietario para un JDialog. Pensé que esto era necesario para que el diálogo pueda deshabilitar al propietario hasta que se cierre el cuadro de diálogo, pero aparentemente la modalidad es independiente del propietario. También me di cuenta de que incluso con un propietario del cuadro de diálogo sigue sin centrar en el propietario, por lo que ahora es mi código como:
public class CustomDialog extends JDialog {
public CustomDialog(String title) {
setModal(true);
setResizable(false);
setTitle(title);
buildGUI();
}
public Result showDialog(Window parent) {
setLocationRelativeTo(parent);
setVisible(true);
return getResult();
}
}
Esto también permite diálogos modales en cuadros de diálogo modales.
¡Gracias por toda su ayuda!
yo no haría la ventana de configuración debe ser modal a cualquier cosa. ¿Qué ocurre si necesitan usar la aplicación mientras trabajan en la ventana de configuración? Me parece muy restrictivo. –