Oppure

Loading
18/03/09 21:32
Il_maca
ciao raga, è la prima volta che scrivo in questa sezione!! vorrei sapere come posso in serire l'orario in una label, mantenendolo sempre aggiornato!
programmo java, con netbeans 6.5!!se serve altro scrivetemelo!
Ultima modifica effettuata da Il_maca 18/03/09 21:32
aaa
19/03/09 13:33
tasx
Io creerei una classe estesa al Thread a cui passerei come parametro la Label.
In seguito nel metodo run() del Thread imposto un ciclo while(condizione), e dentro il ciclo ricavo l'orario che poi vado ad inserire nella label tramite il metodo setText(String s); cosicche' l'orario possa essere continuamente aggiornato.
E' ovvio che non và aggiornato ogni pochi centesimi di secondo, perciò io inserirei una pausa ogni ciclo(anche solo di mezzo secondo).
Ciao!!

ps: Spero di essermi spiegato bene
:k::k::k:
aaa
19/03/09 15:05
Il_maca
Postato originariamente da tasx:

Io creerei una classe estesa al Thread a cui passerei come parametro la Label.
In seguito nel metodo run() del Thread imposto un ciclo while(condizione), e dentro il ciclo ricavo l'orario che poi vado ad inserire nella label tramite il metodo setText(String s); cosicche' l'orario possa essere continuamente aggiornato.
E' ovvio che non và aggiornato ogni pochi centesimi di secondo, perciò io inserirei una pausa ogni ciclo(anche solo di mezzo secondo).
Ciao!!

ps: Spero di essermi spiegato bene
:k::k::k:


si certo!!! mi metto subito all'opera!! io avevo fatto come dicevi tu, ma non passavo la label come parametro, e quindi non sapevo come fare a riportare il valore!!
ti faccio sapere, grazie ancora!!
aaa
19/03/09 15:15
Il_maca
Postato originariamente da tasx:

Io creerei una classe estesa al Thread a cui passerei come parametro la Label.


scusa se rompo, ma i miei professori.... vabbè lasciamo perdere!
Allora voglio chiederti 2 cose:
cosa significa creare una classe estesa??
io finora ho messo questo nella classe che hpo creato

package pacchetto;


import java.text.SimpleDateFormat;
import java.util.Date;

public class thread {
    String result;
    
    public void run() {        
        while(true){
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
        result = sdf.format(new Date());
        }
    }
    

}


quindi, arrivato a questo punto devo settare nella label la stringa result!! e quì c'è l'altro problema, come faccio a passare la label come parametro?
aaa
19/03/09 19:57
tasx
package pacchetto;

import java.text.SimpleDateFormat;
import java.util.Date;

public class thread extends Thread{
    String result;
    Label l;
    
    public thread(Label l) {
        this.l = l;  
    }

    public void run() {        
        while(true){
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
        this.l.setText(sdf.format(new Date()));
        }
}
    

}


Questa è la classe estesa al Thread, cioè essa stessa è un Thread. Ora la utilizzerò in un esempio:

package pacchetto;

import java.awt.*;

    public static void main(String arg[]) {
        Frame f = new Frame("Orologio");
        Label l = new Label();
        thread t = new thread(l); // nota che passo come parametro l
        f.setVisible(true);
        f.setLocation(100,100);
        f.add(l);
        t.start();
}


Ecco fatto. Questo dovrebbe funzionare(a meno di errori di battitura).
La spiegazione è semplice:
creo la finestra(Frame f), creo la Label(Label l) e creo la classe prima scritta(thread) e gli passo come argomento la label che thread andrà a modificare nel ciclo while.
quando invoco t.start(); viene chiamato il metodo run(), implementato precedentemente.

Ciao!! Tasx

ps: posta pure se qualcosa nn è chiaro!! :k::k::k:
aaa
20/03/09 17:45
Il_maca
grazie di cuore per l'aiuto!!:rotfl::rotfl::rotfl:
ora, dimenticavo di dire che sto usando la swing, ma ho semplicemente aggiunto una J davanti a Label! ora mi da solo un errore al t.start();
mi vuole far creare un metodo nella classe!!! come faccio:-?:-?
Ultima modifica effettuata da Il_maca 20/03/09 17:53
aaa
20/03/09 18:03
Il_maca
okok; ho risolto il problema e funziona!! dopo aver sbattuto la testa ci sono riuscito
allora la classe definitiva è questa:

package pacchetto;


import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JLabel;

public class thread extends Thread {
    String result;
    JLabel eti1;

     public thread(JLabel eti1) {
        this.eti1 = eti1;
    }   

    @Override
    public void run() {
        while(true){
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
        this.eti1.setText(sdf.format(new Date()));
        }
}
}


mentre nel main ho inserito:

 private void ONActionPerformed(java.awt.event.ActionEvent evt) {                                   
        Thread t = new thread(eti1);
        t.start();
        this.eti2.setText("TIM");
       
    }     


grazie davvero tanto tasx senza il tuo aiuto non avrei saputo come fare! grazie infinitamente!!
Ultima modifica effettuata da Il_maca 20/03/09 18:04
aaa
20/03/09 22:21
tasx
Di niente ;););)
Sempre a disposizione......... :k::k::k:
Ciao!!
aaa