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

    Prolema con java.util.Timer

    Ciao a tutti ho il seguente problema ho implementato un'interfaccia grafica, a cui è stato aggiungo un timer all'interno del metodo costruttore di MyFrame.

    io vorrei che una volta visualizzata la finestra, il timer continui a generare un numero casuale da 1 a 3, e a seconda del valore entri nello switch e aggiunga del testo nellaTextAreaRight.
    facendo girare il codice, entra una volta nel timer, genera un numero, stampa il messaggio e BASTA.
    il timer non funziona più, è come se il timer non funziona è li morto.

    qualcuno per piacere mi può dare una dritta?
    grazie a tutti

    il codice principale è il seguente;

    la classe MyFrame viene avviata da un altro oggetto.

    codice:
    public class MyFrame extends JFrame{
       private JTextArea textAreaRight;
        Timer t = new Timer();
    
       public MyFrame(){
       ......
       .....
      
       t.schedule(new  SimulazioneTask(vG, this), 4000);
       }
    ......
    ......
    }
    
    
    class SimulazioneTask extends java.util.TimerTask{
    	private VariabiliGlobali vG;
    	private MyFrame win;
    	public SimulazioneTask(VariabiliGlobali vG, MyFrame win){
    		this.vG = vG;
    		this.win = win;
    	}
    	public void run(){
    		
    		boolean valore=false;
    		int numeroCasuale= (int)(3*Math.random())+1;
    		
    		switch(numeroCasuale){
    			case 1:
    				valore = this.win.getDeliveryAttend("Express");
    				System.out.println("E' possibile fare una consegna espressa ";
    				this.win.getTextAreaRight().append("hhhh express");
    				break;
    			case 2:
    				valore = this.win.getDeliveryAttend("Normale");
    				System.out.println("e' possibile fare una consegna normale " + valore);
    				this.win.getTextAreaRight().append("hhhh normale" );
    				break;
    			case 3:
    				valore = this.win.getDeliveryAttend("Large");
    				System.out.println("e' possibile fare una consegna large " + valore);
    				this.win.getTextAreaRight().append("hhhh large");
    				break;
    		}
    		System.out.println("Hello World");
    	}
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    prova ad utilizzare questa versione del metodo schedule:

    codice:
    schedule(TimerTask task, long delay, long period)
    Ps. non avevo mai usato il Timer del package util , di solito uso quello di javax.swing , ma ho fatto una prova ora e utilizzando il metodo sopra citato l'evento viene ripetuto come credo serva a te...


  3. #3
    perché non usi questo metodo della classe TimerTask:
    codice:
    //Schedules the specified task for repeated fixed-rate execution, beginning after the specified delay.
    
    scheduleAtFixedRate(TimerTask task, long delay, long period);

    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

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.