2011-09-13 9 views
5

Tengo un programa Java lanzador de lanzamiento para lanzar otra clase (ejecutando su método principal). Cada programa tiene su botón Cancelar para salir.¿Cómo puedo salir solo de mi subprograma, no de toda la máquina virtual?

Uso System.exit(0); cuando se presiona este botón de cancelar.

El programa lanzador hace en actionPerformed:

if (source==carMenuItem) { 
    ta.append("Car launched\n"); 
    TestCar.main(par); 

} 
if (source==DialogboxMenuItem) { 
    ta.append("Dialogbox launched\n");    
    DialogBox.main(par); 
}   
if (source==LengthConversionMenuItem) { 
    ta.append("LengthConversion launched\n");    
    LengthConversion.main(par);   
} 

Al pulsar el botón de cancelación del programa, sino que también cierra mi programa de lanzamiento. ¿Cómo puedo evitar esta situación?

+1

Véase mi respuesta a [Prevención System.exit() de la API] (http://stackoverflow.com/ preguntas/5401281/prevention-system-exit-from-api/5401319 # 5401319). –

Respuesta

2

System.exit() finaliza la máquina virtual, por lo tanto, el hilo inicial también finaliza, simplemente regrese de su método main().

Después de revisar su código: no se supone que todas las clases tengan un método main() (si no se usa también de forma independiente). Debería considerar llamar a un constructor para crear una instancia de una clase y llamar a un método que no se llame main().

1

Con System.exit no puede. Esto terminará la JVM completa y todos los procesos dentro de ella.

2

O puede utilizar el método dispose() en lugar de System.exit(): -porque System.exit() finalizará la aplicación en sí.

o puede usar setVisible() como falso.

Cuestiones relacionadas