Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - ora e label
Forum - Java - ora e label

Avatar
Il_maca (Normal User)
Rookie


Messaggi: 49
Iscritto: 19/12/2008

Segnala al moderatore
Postato alle 22:32
Mercoledì, 18/03/2009
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 il 18/03/2009 alle 22:32
PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 14:33
Giovedì, 19/03/2009
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:

PM Quote
Avatar
Il_maca (Normal User)
Rookie


Messaggi: 49
Iscritto: 19/12/2008

Segnala al moderatore
Postato alle 16:05
Giovedì, 19/03/2009
Testo quotato

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!!

PM Quote
Avatar
Il_maca (Normal User)
Rookie


Messaggi: 49
Iscritto: 19/12/2008

Segnala al moderatore
Postato alle 16:15
Giovedì, 19/03/2009
Testo quotato

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

Codice sorgente - presumibilmente Java

  1. package pacchetto;
  2.  
  3.  
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6.  
  7. public class thread {
  8.     String result;
  9.    
  10.     public void run() {        
  11.         while(true){
  12.         SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
  13.         result = sdf.format(new Date());
  14.         }
  15.     }
  16.    
  17.  
  18. }



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?

PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 20:57
Giovedì, 19/03/2009
Codice sorgente - presumibilmente Java

  1. package pacchetto;
  2.  
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5.  
  6. public class thread extends Thread{
  7.     String result;
  8.     Label l;
  9.    
  10.     public thread(Label l) {
  11.         this.l = l;  
  12.     }
  13.  
  14.     public void run() {        
  15.         while(true){
  16.         SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
  17.         this.l.setText(sdf.format(new Date()));
  18.         }
  19. }
  20.    
  21.  
  22. }



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

Codice sorgente - presumibilmente Java

  1. package pacchetto;
  2.  
  3. import java.awt.*;
  4.  
  5.     public static void main(String arg[]) {
  6.         Frame f = new Frame("Orologio");
  7.         Label l = new Label();
  8.         thread t = new thread(l); // nota che passo come parametro l
  9.         f.setVisible(true);
  10.         f.setLocation(100,100);
  11.         f.add(l);
  12.         t.start();
  13. }



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:

PM Quote
Avatar
Il_maca (Normal User)
Rookie


Messaggi: 49
Iscritto: 19/12/2008

Segnala al moderatore
Postato alle 18:45
Venerdì, 20/03/2009
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 il 20/03/2009 alle 18:53
PM Quote
Avatar
Il_maca (Normal User)
Rookie


Messaggi: 49
Iscritto: 19/12/2008

Segnala al moderatore
Postato alle 19:03
Venerdì, 20/03/2009
okok; ho risolto il problema e funziona!! dopo aver sbattuto la testa ci sono riuscito
allora la classe definitiva è questa:

Codice sorgente - presumibilmente Java

  1. package pacchetto;
  2.  
  3.  
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6. import javax.swing.JLabel;
  7.  
  8. public class thread extends Thread {
  9.     String result;
  10.     JLabel eti1;
  11.  
  12.      public thread(JLabel eti1) {
  13.         this.eti1 = eti1;
  14.     }  
  15.  
  16.     @Override
  17.     public void run() {
  18.         while(true){
  19.         SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
  20.         this.eti1.setText(sdf.format(new Date()));
  21.         }
  22. }
  23. }



mentre nel main ho inserito:

Codice sorgente - presumibilmente Java

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



grazie davvero tanto tasx senza il tuo aiuto non avrei saputo come fare! grazie infinitamente!!

Ultima modifica effettuata da Il_maca il 20/03/2009 alle 19:04
PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 23:21
Venerdì, 20/03/2009
Di niente ;););)
Sempre a disposizione......... :k::k::k:
Ciao!!

PM Quote