2010-01-17 23 views
6

Lo siento por pregunta muy simple, pero yo no era capaz de encontrar nada en la red, probablemente porque no sé los términos correctos para buscar.Java Swing ventanas "niños"

Cuando usted tiene una aplicación de escritorio, hay muchas ventanas de los llamados niños: uno para las opciones, una para "acerca de", y así sucesivamente. ¿Cómo hacerlos en Java Swing (con herramientas NetBeans - opcional)?

Hasta ahora me acaba de crear otra JFrame y el hecho relevante abrió la misma manera principales lanzamientos de función, así, JFrame principal. Pero hay algo mal con este método: cuando cierro la ventana hija a través de x en la esquina superior derecha, todo el programa termina como si estuviera cerrando la ventana principal. Esto es probablemente porque el código generado automáticamente por NetBeans para xy yo puedo encontrarlo y cambiarlo en algún lugar ... pero aun así tengo la sensación de que debe haber una manera más simple de agregar cuadros JFrames para niños (o JPanels o lo que sea para ventanas hijas) ;)

Respuesta

9

... Pero hay algo malo con este método : cuando cierro ventana secundaria a través de X en la esquina superior derecha, todo el programa termina como si yo estaba cerrando la ventana principal. ...

Bueno, yo diría que estás en el camino correcto. Sólo asegúrese de que usted lo siguiente para su hijo Los marcos:

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

A continuación, cerrar las ventanas hijas no van a cerrar toda la aplicación.

HTH! ;-)

3

¿se refiere a una ventana de diálogo (ver How to Make Dialogs) que es probable que quiere ser modal para bloquear la entrada del usuario a todas las demás ventanas en el programa (ver An Overview of Dialogs)?

+0

No exactamente. Me refiero a algo así como la ventana Opciones. Es decir. Ventana de Preferencias de Firefox. A menos que también se llame ventana de diálogo. – Sejanus

1

Vaya al modo de marco de diseño -> seleccione su marco -> en las propiedades, la opción puño. Seleccione Dispose on close.

Si no ve los puntales: Ctrl + Shift + 7 o Window (in the frame menu) -> Properties

1

Si crea marcos, no se consideran niños ventanas. No puede configurar un propietario para ellos como podría un JDialog. Y si lo desea crear otro JFrame, entonces se tendría que ajustar la operación de cierre de

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

en lugar de

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

La operación EXIT_ON_CLOSE llamará System.exit (0); que terminará la JVM. Sólo recuerde, que si su JFrame principal se establece en DISPOSE_ON_CLOSE entonces usted debe asegurarse de que todos sus otros marcos han sido dispuestos adecuadamente, de lo contrario no salga hasta que hayan sido.

+0

Gracias a todos ustedes;) Lástima que no puedo aceptar formalmente más de una respuesta, todas fueron útiles :) – Sejanus