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 :

[Thread] [Date] [Swing] deplacer et mettre a jour des composants


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Mars 2003
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 2
    Par défaut [Thread] [Date] [Swing] deplacer et mettre a jour des composants
    Je voulais réaliser 2 Threads distincts :
    Le premier "ThreadTest2" qui déplace un JButton (toutes les 100ms)
    Le second "ThreadTemps" qui affiche le temps dans une JTextArea.( toutes les secondes)

    Je n'arrive pas à faire fonctionner ce programme comme je le souhaitais , ...Merci de me faire part de vos idées concernant la correction de cet exemple

    Essai 1: lorsque le code de "ThreadTemps" contient
    jTextArea1.setText(new Date().toString());, à chaque éxécution, le JButton déplacé par ThreadTest2, revient temporairement à sa position initiale

    Essai 2: lorsque le code de "ThreadTemps" contient
    jTextArea1.setText("eeee");, à chaque éxécution, le JButton déplacé par ThreadTest2, revient temporairement à sa position initiale

    Essai 3: lorsque le code de "ThreadTemps" contient
    jButton4.setText("eeee");, le JButton déplacé par ThreadTest2, se déplace comme voulu, sans revenir temporairement à sa position initiale

    Essai 4: lorsque le code de "ThreadTemps" contient
    jButton4.setTextnew ( Date().toString());, le JButton déplacé par ThreadTest2, se déplace comme voulu, revient temporairement à sa position initiale

    les Threads sont appelés par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    t1.ThreadStart();
    }
    });
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    ThreadHorloge.ThreadStart();
    }
    });
    le code des Threads est :
    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
    75
    76
    77
    78
    79
    80
    81
     
     
    ///-----------------------------------------------
    public class ThreadTest2 implements Runnable {
    boolean end;
    Thread t;
    String Msg;
    int count;
    public ThreadTest2() {
     
    t = new Thread(this);
    setName( "nom ThreadTest2");
    }
    public synchronized void run(){
    this.end=false;
    PLocation=jButton1.getLocation();
    while (!end)
    {
    PLocation.translate(1,1);
    jButton1.setLocation(PLocation);
    try{
    Thread.sleep(80);
    }
    catch (InterruptedException e){
    return;
    }
    }
    System.out.println(Msg+ " Terminé");
    }
    // SwingUtilities.invokeLater(ThreadTest2);
     
    public void ThreadStop(){
    this.end=true;
    }
    public void ThreadStart(){
    // SwingUtilities.invokeLater(t);
    t.start();
    }
     
    } //ThreadTest2
     
    //----------------------------------------------
     
    ///-----------------------------------------------
    public class ThreadTemps implements Runnable {
    boolean end;
    Thread t;
    public ThreadTemps() {
     
    t = new Thread(this);
    setName( "nom ThreadTemps");
    }
    public synchronized void run(){
    this.end=false;
    PLocation2=jButton1.getLocation();
    while (!end)
    {
    PLocation2.translate(0,10);
    jButton4.setLocation(PLocation2);
     
    // jTextArea1.setText("eeee");
    jTextArea1.setText( new Date().toString());
     
    try{
    Thread.sleep(1000);
    }
    catch (InterruptedException e){
    return;
    }
    }
    System.out.println( " Terminé");
    }
    public void ThreadStop(){
    this.end=true;
    }
    public void ThreadStart(){
    // SwingUtilities.invokeLater(t);
    this.t.start();
    }
     
    } //ThreadTemps
    __________________
    Débutant JBUILDER 9

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Pour ce genre de chose, à mon avis oublie les threads et regarde plutot la classe Timer de Swing.

    Sinon essaie de respecter les coventions Java : méthodes et variables commencent par une minuscule. C'est plus facile pour les autres qui relisent ton code !

  3. #3
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par the-gtm
    Sinon essaie de respecter les coventions Java : méthodes et variables commencent par une minuscule. C'est plus facile pour les autres qui relisent ton code !
    Et aussi les espacements!

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Plutot que des Thread, je pense qu'une paire de Timer Swing (voir meme un seul) suffit largement pour ce probleme.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2003
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 2
    Par défaut
    J'ai essayé en utilisant 2 timer.
    J'observe toujours le même problème :

    A chaque exécution de "jTextArea1.setText(new Date().toString())" par le "timerDate", le JButton1 déplacé par le "timerButton", revient temporairement à sa position initiale

    Le code des timers est le suivant :

    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
     
        pLocation=jButton1.getLocation();
        timerButton = new Timer(100, new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
              pLocation.translate(1,1);
              jButton1.setLocation(pLocation);
               }
           }
        );
        pLocation2=jButton4.getLocation();
        timerDate = new Timer(1000, new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
              jTextArea1.setText( new Date().toString());
        //      pLocation2.translate(0,10);
        //      jButton4.setLocation(pLocation2);
               }
           }
        );

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/03/2010, 18h23
  2. mettre a jour des champs radio après un clic
    Par amarcil dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 07/07/2008, 17h24
  3. permettre de mettre a jour des champs null
    Par alexkickstand dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/08/2007, 19h37
  4. Comment mettre a jour des calculs dans un userform
    Par alex.a dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/06/2007, 17h59
  5. [MFC] Mettre a jour des EditBox !!!
    Par pinto_armindo dans le forum MFC
    Réponses: 7
    Dernier message: 27/04/2006, 21h03

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