Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724

    Timer per ritardare esecuzione codice

    ho questa funzione che ordina con l'algoritmo bubble le carte di un seme (13 numeri). ho aggiunto del codice perchè rappresento graficamente il suo funzionamento con lo spostamento delle carte. la funzione lavora correttamente e anche la grafica.il mio problema è che tra un operazione è l'altra di ordinamento voglio che passi del tempo morto in modo tale che si capisca graficamente i passaggi che vengono effettuati. Ho provato ad inserire più Timer, ma dopo che il secondo viene lanciato si blocca tutto e nn va avanti. é corretta questa soluzione o no?

    la classe Tempo nn fa niente
    codice:
    Timer     timer = new Timer();
    TimerTask task = new Tempo();
    
    public void bubbleSort(int[] a, int l, JPanel [] panel, JPanel app )
    {
    	  try{
    	   int n = a.length;
    	   for (int pass=1; pass < n; pass++) { 
    		   	for (int i=0; i < n-pass; i++) {
                                 timer.schedule( task, 1000 ); 
    		             if (a[i] > a[i+1]) {
    		                // scambia elementi
       		                int temp = a[i];  
    		                app.removeAll();app.add(panel[i].getComponent(0));app.validate();
    		                timer.schedule( task, 1000 ); 
    		                a[i] = a[i+1];  
    		                panel[i].removeAll();panel[i].add(panel[i+1].getComponent(0));panel[i].validate();
    		                timer.schedule( task, 1000 ); 
    		                a[i+1] = temp;
    		                panel[i+1].removeAll();panel[i+1].add(app.getComponent(0));panel[i+1].validate();
    		                timer.schedule( task, 1000 ); 
    		              
    		             }
    		         	        	
    		        }
    		    }
    	   } catch (Exception e){}
    	   
    	   }
    	  
    	  
    	 
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Timer per ritardare esecuzione codice

    Originariamente inviato da perzem
    é corretta questa soluzione o no?
    A vista direi di no. E comunque bisogna vedere nel contesto di quale thread fai eseguire questo metodo bubbleSort(). Se non è il EDT (event dispatch thread) allora non dovresti nemmeno andare a manipolare la interfaccia utente, devi farlo solamente nel contesto del EDT. (e se fosse il EDT ... blocchi tutto!)

    Se hai il JDK installato, vai nella directory blabla\jdkX.X.X\demo\applets\SortDemo, c'è una applet (sviluppata niente meno che da Gosling in persona) che mostra proprio come "visualizzare" l'avanzamento dell'ordinamento.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.