non ho il codice sottomano ora .. provo a ricostruirlo.. è abbastanza banale.
codice:
public class SplashFact{
static SplashWin splash=null;
public static SplashWin getSplashWin(){
if(splash==null){
splash=new SplashWin();
splash.start();
}
return splash;
}
}
public class SplashWin extends Thread{
SplashWnd splash=null;
public void run(){
if(splash==null){
splash = new SplashWnd();
// istanzia e visualizza la JWindow.
}
while(splash!=null){
//elaborazione
try{
sleep(500);
}catch(InterruptedException iEx){iEx.printStackTrace();}
}
}
public void next(){
// elaboro alcuni compenti di SplashWnd
}
public void close(){
// imposto a null tutti i componenti di SplashWnd
splash.setVisible(false);
// provato anche dispose();
splash=null;
}
}
public class Start{
public static void main(String[] args){
SplashFact.getSplashWin();
/*
* istanzio un Form MDI e nell'elaborazione
* in vari punti utilizzo la chiamata
* SplashFact.getSplashWin().next()
*/
SplashFact.getSplashWin().close();
}
}
per quel che ho visto la splashWin viene caricata correttamente... cicla in modo corretto e effettua il close() in modo corretto.. trovando il null esce dal while e termina il run().
A questo punto sul form MDI premo un polsante che apre il JDialog...
compare la finestra dialog ma insieme a questa compare l'immagine della splashWin nel suo ultimo stato.
Non ho moltissima esperienza sui thread ma non mi sembra di aver scritto bestialità...