2011-09-13 7 views
5

Ho un programma Java launcher per lanciare un'altra classe (eseguendo il suo metodo principale). Ogni programma ha il pulsante Annulla per uscire da solo.Come posso uscire solo dal mio sottoprogramma, non dall'intera VM?

Io uso System.exit(0); quando si preme questo pulsante Annulla.

Il programma di avvio fa in 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);   
} 

Quando si preme il pulsante annullare il programma, si chiude anche il mio programma di avvio. Come posso evitare questa situazione?

+1

Vedi la mia risposta a [Prevenire System.exit() da API] (http://stackoverflow.com/ domande/5401281/prevenzione-system-uscita-da-api/5401319 # 5401319). –

risposta

2

System.exit() termina la VM pertanto anche il thread iniziale viene terminato, è sufficiente tornare dal metodo main().

Dopo aver esaminato il codice: non tutte le classi dovrebbero avere un metodo main() (se non utilizzato anche standalone). Dovresti considerare di chiamare un costruttore per creare un'istanza di una classe e chiamare un metodo non denominato main().

1

Con System.exit non è possibile. Questo interromperà l'intera JVM e tutti i processi al suo interno.

2

Oppure è possibile utilizzare il metodo dispose() anziché System.exit(): perché il System.exit() terminerà l'intera applicazione.

oppure è possibile utilizzare setVisible() come falso.

Problemi correlati