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

 Java Discussion :

Grosse confusion avec Timers + valeurs Static


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 17
    Par défaut Grosse confusion avec Timers + valeurs Static
    Rebonjour à toutes/tous !
    Je passe des heures à essayer des codes différents pour mettre au point un timer, mais rien à faire... j'attends vos conseils!

    Je cherche à insérer un timer général, dans une jFrame, qui chaque seconde va incrémenter des variables et mettre à jour les jLabels.

    J'ai vu plusieurs méthodes, avec Timer, TimerTask, ActionListener, etc. et je me suis accroché à celle qui me semblait la plus simple : celle qu'on retrouve sur ce code là (voir le code du bas)


    Moi je cherche à insérer ça dans ma jFrame, qui mettra à jour des labels qui s'y trouvent.
    J'ai fait 2 classes pour l'instant :

    La JFrame :
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
     
    public class NewJFrame extends javax.swing.JFrame {
     
     
        static String labelvalue = "label init";
     
        public NewJFrame() {
            initComponents();
        }            
     
     
     
        void updatelabel() {
            jLabel1.setText(labelvalue);
        }
     
     
     
     
     
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {
     
            jPanel1 = new javax.swing.JPanel();
            jLabel1 = new javax.swing.JLabel();
            jMenuBar1 = new javax.swing.JMenuBar();
            jMenu1 = new javax.swing.JMenu();
            jMenuItem1 = new javax.swing.JMenuItem();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.LINE_AXIS));
     
            jLabel1.setText("jLabel1");
     
            javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
            jPanel1.setLayout(jPanel1Layout);
            jPanel1Layout.setHorizontalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(109, 109, 109)
                    .addComponent(jLabel1)
                    .addContainerGap(257, Short.MAX_VALUE))
            );
            jPanel1Layout.setVerticalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                    .addContainerGap(149, Short.MAX_VALUE)
                    .addComponent(jLabel1)
                    .addGap(118, 118, 118))
            );
     
            getContentPane().add(jPanel1);
     
            jMenu1.setText("File");
     
            jMenuItem1.setText("jMenuItem1");
            jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jMenuItem1ActionPerformed(evt);
                }
            });
            jMenu1.add(jMenuItem1);
     
            jMenuBar1.add(jMenu1);
     
            setJMenuBar(jMenuBar1);
     
            pack();
        }// </editor-fold>
     
    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
        TimerExample timerexample = new TimerExample();
     
        timerexample.launch();
        System.out.printf ("start timer");
    }
     
        public static void main(String args[]) {
            /* Set the Nimbus look and feel */
            //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
            /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
             * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
             */
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
            //</editor-fold>
     
     
     
     
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
     
                public void run() {
                    new NewJFrame().setVisible(true);
                    System.out.printf ("frame visible");
                }
            }); 
     
        }
     
     
        // Variables declaration - do not modify
        private javax.swing.JLabel jLabel1;
        private javax.swing.JMenu jMenu1;
        private javax.swing.JMenuBar jMenuBar1;
        private javax.swing.JMenuItem jMenuItem1;
        private javax.swing.JPanel jPanel1;
        // End of variables declaration
    }
    La classe Timer :
    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
    import java.util.*;
    
    public class TimerExample
    {
        public static void main (String[] args)
        {
        }
    
        
        public void launch(){
            
            Timer timer = new Timer();
            timer.schedule (new TimerTask() {
                
                public void run()
                {
                    System.out.printf ("1 seconde");
                    
                    NewJFrame.labelvalue = "label changed";
                    NewJFrame.updatelabel();
                }
            }, 0, 1000);
        }
    }
    Pour l'instant, NewJFrame.updatelabel(); donne une erreur, car updatelabel() n'est pas static.
    Si je mets updatelabel() static, il reste jLabel1 qui n'est pas static, et je vois pas pourquoi...


    Merci de votre aide!

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Je t'invite à bien revoir les notions de static.
    Ici, ta JFrame est bien un objet, et donc pour que ton timer agisse dessus, il faut qu'il connaisse l'instance que tu manipules (dit autrement, il faut qu'il ait une référence dessus).
    Ta classe de TimerExample devrait ressembler à qqchose comme ça (revoir ensuite comment l'utiliser)
    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
     
    import java.util.*;
     
    public class TimerExample
    {
        private NewJFrame newJFrame;
     
        public TimerExample(NewJFrame newJFrame) {
          this.newJFrame = newJFrame;
        }
     
        public void launch(){
     
            Timer timer = new Timer();
            timer.schedule (new TimerTask() {
     
                public void run()
                {
                    System.out.printf ("1 seconde");
     
                    newJFrame.labelvalue = "label changed";
                    newJFrame.updatelabel();
                }
            }, 0, 1000);
        }
    }
    En mettant bien sur labelvalue en attribut et non en static.

    Si ce n'est pas assez clair, n'hésite pas à redemander.

Discussions similaires

  1. requete avec la valeur NULL
    Par Hinkel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/11/2008, 16h39
  2. Pb UPDATE champ nullable avec la valeur Null
    Par zev dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 01/02/2005, 14h04
  3. champ avec une valeur?
    Par sonialem2000 dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/06/2004, 08h23
  4. Problème avec l'option -static de gcc
    Par lsdInside dans le forum Linux
    Réponses: 2
    Dernier message: 08/05/2004, 01h01
  5. Réponses: 6
    Dernier message: 04/04/2003, 15h28

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