IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

l'UC à 100% à cause d'un Thread


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de dv-2008
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 240
    Par défaut l'UC à 100% à cause d'un Thread
    bonjour,
    svp j'ai un petit problème avec mon application,car en voulant afficher l'heure courante sur ma frame j'ai du Créer un thread et dans la méthode run() j'ai mis une boocle infinie pour que l'heure se mette automatiquement à jour
    mais j'ai remarqué que le programme devient tres lourd à manipuler et l'UC est à 100%
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    import java.text.*;
    import java.util.Date;
     
    public class Thrd extends Thread {
     
    private mainf f= null;
     
    	@SuppressWarnings("deprecation")
    	public void run()
    	{
    		f.setResizable(false);
    		while(f.isVisible())
    		{
    			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    			Date d =new Date();
    			String heure=d.getHours()+" : "+d.getMinutes()+" : "+d.getSeconds();
    			sdf.setLenient(true);
    			mainf.textDate.setText("                                       "+sdf.format(d));
    		    mainf.textHeure.setText("                                       "+heure);
     
    		}
     
    	}
     
    	public void setMainf(mainf f)
    	{
    		this.f= f;
    	}
    }
    est ce que quelqu'un peut me donner une astuce pour afficher l'heure sans passer par cette boocle qui torture mon proc
    merci

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Passes par un Timer c'est fait pour ça.

    Google: Timer java

    Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    /*
     * BlinkingLabel.java  1.0
     * 
     * Copyright (c) 1999 Emmanuel PUYBARET - eTeks.
     * All Rights Reserved.
     *
     */
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
     
    // Classe de label clignotant en utilisant 
    // alternativement la couleur par défaut du label 
    // et une autre couleur passée au constructeur 
    public class BlinkingLabel extends JLabel
    {  
      Color defaultColor;   // Couleur par défaut du label
      Color blinkingColor;  // Couleur de clignotement
      Timer timer;          // Timer déclenchant des tics
     
      // Constructeur 
      public BlinkingLabel (String text, 
                            Color  blinkingColor) 
      {	
        super (text);    
        this.blinkingColor = blinkingColor;
        this.defaultColor  = getForeground ();
     
        // Création et lancement du timer
        timer = createTimer ();
        timer.start ();
      }
     
      // Méthode renvoyant un timer prêt à démarrer
      private Timer createTimer ()
      {
        // Création d'une instance de listener 
        // associée au timer
        ActionListener action = new ActionListener ()
          {
            // Méthode appelée à chaque tic du timer
            public void actionPerformed (ActionEvent event)
            {
              // Inversion de la couleur
              if (getForeground ().equals (defaultColor))            
                setForeground (blinkingColor);
              else
                setForeground (defaultColor);
            }
          };
     
        // Création d'un timer qui génère un tic
        // chaque 500 millième de seconde
        return new Timer (500, action);
      }  
     
      // Méthode main () d'exemple de mise en oeuvre.
      // Utilisation : java BlinkingLabel
      public static void main (String [] args)
      {
        // Création de deux labels
        JLabel label1 = new BlinkingLabel ("Label 1", Color.blue);
        JLabel label2 = new BlinkingLabel ("Label 2", Color.red.darker ());
     
        // Ajout des labels à une fenêtre d'exemple
        JFrame frame = new JFrame ("Exemple");
        frame.getContentPane ().setLayout (new GridLayout (2, 1, 5, 5));
        frame.getContentPane ().add (label1);
        frame.getContentPane ().add (label2);
        frame.pack ();
        frame.show ();
      }
    }

  3. #3
    Membre éclairé Avatar de dv-2008
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 240
    Par défaut
    Merci beaucoup beaucoup pour votre aide
    maintenant l'appli marche super bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fixer le nombre de Threads a 100
    Par lahiane dans le forum Général Java
    Réponses: 1
    Dernier message: 19/07/2009, 09h06
  2. Réponses: 1
    Dernier message: 08/11/2008, 22h46
  3. Utilisation proc 100% - thread & repaint
    Par Rakken dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 12/08/2008, 23h35
  4. Proc à 100% à cause du controleur de bus USB.
    Par byloute dans le forum Windows XP
    Réponses: 9
    Dernier message: 02/04/2007, 10h41
  5. ERROR THREAD DEATH -> quelles causes ?
    Par romainp dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 18/10/2006, 16h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo