java - icon - jpanel
JDialog setVisible(falso) vs dispose() (3)
Llamar a dispose()
libera los recursos asociados con el diálogo. Puede mantener el diálogo después de dispose()
. Si le preocupa tener demasiados cuadros de diálogo, use una WeakReference
para guardar la referencia. Esto asegurará que los diálogos que no use solo sobrevivan a la recolección de basura siempre que no se necesite el espacio que ocupan.
¿Tiene sentido usar setVisible (falso) en un diálogo y reutilizarlo más tarde o es más seguro llamar a dispose () cada vez y crear un nuevo JDialog? ¿Qué pasa con las pérdidas de memoria con setVisible (falso)?
EDITAR: Mi pregunta no es tanto acerca de salir de la aplicación. Más sobre los cuadros de diálogo que tienen el cuadro principal como principal y se abren y cierran durante la vida útil de la aplicación. Por ejemplo, digamos que mis aplicaciones tienen aproximadamente 10 cuadros de diálogo que muestran datos diferentes cada vez que los abro. ¿Debería volver a utilizar las instancias y usar setVisible () o debería crear un nuevo cuadro de diálogo cada vez y eliminarlo () en el cierre?
Recomendaría usar dispose()
para liberar recursos y liberar memoria. Si desea volver a mostrar el cuadro de diálogo, simplemente invoque setVisible(true)
.
Es importante tener en cuenta que cuando se elimina la última ventana visualizable dentro de la máquina virtual Java (VM), la VM puede finalizar. Consulte AWT Threading Issues para obtener más información.
Todavía no veo ninguna diferencia between JDialog#dispose();
y JDialog.setVisible(false)
más aquí , cada uno de ellos podría ser activado para su reutilización, y no importa si estaba / estaba Disposed o Visibled
mi punto de vista es que esta pregunta debe dividirse en tres áreas separadas
1) algunos JFrame
son padres para JDialog
o JWindow
( exist only is is there JFrame
), luego el último debe apagar las luces
3) todavía existe otro JFrame, JDialog or JWindow
, luego el último debe apagar las luces
- alcanzable usando ->
Window[] wins = Window.getWindows();
- el último debe apagar las luces ->
System.exit(0);
- Sugiero que en todos los casos posibles debe existir
JFrame
visible conJFrame.EXIT_ON_CLOSE
, o de otra manera podría implementarWindowsListener
conSystem.exit(0);