Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    dispose() non sempre funziona

    Ciao a tutti!
    Ho un problema con il metodo dispose() per chiudere una finestra: ho creato un gioco, da cui posso aprire una finestra per chidere il nome utente. Una volta che il nome utente è stato inserito e viene premuto in tasto OK, tramite il comando finestra.dispose(), la finestra del nomeUtente dovrebbe chiudersi. In effetti questo succede, ma se, senza chuidere il gioco, comincio una nuova partita, quando mi viene richiesto il nome utente e dopo aver premuto OK, la finestra nomeUtente non si chiude più... perchè non funziona? Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Se non posti il codice che usi, sarà ben difficile risponderti.

    Evidentemente viene lanciata qualche eccezione, ma anche qui come possiamo saperlo?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    ahahah LeleFT tu ce l'hai il mio codice, sono Valeria xD ho scritto qui per non disturbarti troppo xD

    Il codice comunque è questo:

    codice:
    public class ascoltatoreButente implements ActionListener { 		 		
              public void actionPerformed(ActionEvent e) { 			 			
                        
                       String s = e.getActionCommand(); 			 			
    
                       if(s.equals("Annulla")){ 				
                          System.out.println("Annulla il gioco"); 			   
                          nomeUtente.this.dispose(); 			
                       } 			 			
    
                       if(s.equals("Facile")){ 				
                          System.out.println("Livello facile"); 				
                          liv = s; 			
                       } 			 			
    
                       if(s.equals("Difficile")){ 				
                          System.out.println("Livello difficile"); 				
                          liv = s; 			
                      } 			 			
    
                      if(s.equals("OK")){ 				
                          System.out.println("Inizia gioco"); 				
                          nomeUtente.this.dispose(); 				
                          visualSol.punteggio.setText(nomeField.getText() +" il tuo punteggio è " + game.score); 	
    		      game.inizioGioco(); 			
                      } 			     		
              }//actionPerformed 	
         } 
    }  //  @jve:decl-index=0:visual-constraint="0,3"

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    sarebbe meglio scrivere l'azione in modo da non avere istruzioni dopo il dispose.

    codice:
    public class ascoltatoreButente implements ActionListener { 		 		
              public void actionPerformed(ActionEvent e) { 			 			
                        
                       String s = e.getActionCommand(); 			 			
    
                       if(s.equals("Annulla")){ 				
                          System.out.println("Annulla il gioco"); 			   
                          nomeUtente.this.dispose(); 			
                       } 			 			
    
                       if(s.equals("Facile")){ 				
                          System.out.println("Livello facile"); 				
                          liv = s; 			
                       } 			 			
    
                       if(s.equals("Difficile")){ 				
                          System.out.println("Livello difficile"); 				
                          liv = s; 			
                      } 			 			
    
                      if(s.equals("OK")){ 				
                          System.out.println("Inizia gioco"); 				
                         			
                          visualSol.punteggio.setText(nomeField.getText() +" il tuo punteggio è " + game.score); 	
    		      game.inizioGioco(); 	
                          nomeUtente.this.dispose(); 			
                      } 			     		
              }//actionPerformed 	
         } 
    }
    soprattutto controlla che non ci siano eccezioni e infine dai un'occhiata qui, sicuramente la tua finestra è "riciclata" dalla VM

  5. #5
    Grazie del consiglio ma niente... non capisco perchè la prima volta funziona.. ma se dalla stessa istanza del programma voglio creare una nuova partita, la JFrame non si chiude... ho provato anche con .setVisible(false); ma non cambia nulla...

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    sicura che non c'è nessuna eccezione da qualche parte?
    Perché ne ho fatte tante di robe del genere e ha sempre funzionato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.