Partage
  • Partager sur Facebook
  • Partager sur Twitter

Faire varier le nom d'un objet dans une boucle for

    14 novembre 2019 à 9:02:02

    Bonjour à tous,

    Je ne suis pas un expert en java, et je viens chercher un conseil ou une orientation. Mon problème est le suivant (je travaille sous NETBEANS) :

    Dans une jFrame, j'ai 10 jPanel qui contiennent chacun les mêmes types d'informations. en particulier des jLabel.

    Pour rendre mon code plus simple, je souhaiterais faire une boucle for, qui mette à jour pour chaque jPanel, avec des informations. Ex: mettre une heure dans le label ayant pour nom "heure1" dans le panel 1, mettre une autre heure dans le label ayant pour nom "heure2" dans le panel 2, etc...

    J'ai pensé à utiliser des ArrayList pour chaque information de même nature (dans mon exemple "heureX"), mais ça ne marche pas... (ou peut être ai-je mal programmé). Je pense que je manipule mal les objets.

    Avez vous une méthode à me conseiller ?

    D'avance merci

    • Partager sur Facebook
    • Partager sur Twitter
      14 novembre 2019 à 10:03:53

      Salut,

      Exemple de ton code stp ?

      • Partager sur Facebook
      • Partager sur Twitter
        14 novembre 2019 à 10:54:16

        @YvesMillet

        Sois plus explicite s'il te plaît 😅

        • Partager sur Facebook
        • Partager sur Twitter
          16 novembre 2019 à 9:28:32

          Bonjour à vous,

          Merci pour vos réponse auxquelles je vous apporte les éléments demandés

          Après un léger déplacement voici un raccourcit du code qui me pose souci.

          lorsque je regarde "essai", il est "null" donc ne pointe sur rien donc le setTexte reste inefficace

          package testfenetre;
          
          import java.util.ArrayList;
          import javax.swing.JTextField;
          
          
          /**
           *
           * @author pi
           */
          public class Interface extends javax.swing.JFrame {
          
          
              private javax.swing.JTextField lstHeure[] = new javax.swing.JTextField[2];
             
              /**
               * Creates new form Interface
               */
              public Interface() {
                  lstHeure[0] = toto ;
                  lstHeure[1] = tutu ;
                  
                  initComponents();
              }
              
              public javax.swing.JTextField getlistHeure(int i){
                  System.out.println(lstHeure[i]);
                  return lstHeure[i] ;
              }
              
              /**
               * This method is called from within the constructor to initialize the form.
               * WARNING: Do NOT modify this code. The content of this method is always
               * regenerated by the Form Editor.
               */
              @SuppressWarnings("unchecked")
              // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
              private void initComponents() {
          
                  toto = new javax.swing.JTextField();
                  tutu = new javax.swing.JTextField();
          
                  setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
          
                  toto.setText("jTextField1");
          
                  tutu.setText("jTextField2");
          
                  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
                  getContentPane().setLayout(layout);
                  layout.setHorizontalGroup(
                      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                      .addGroup(layout.createSequentialGroup()
                          .addGap(73, 73, 73)
                          .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                              .addComponent(tutu, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(toto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                          .addContainerGap(258, Short.MAX_VALUE))
                  );
                  layout.setVerticalGroup(
                      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                      .addGroup(layout.createSequentialGroup()
                          .addGap(105, 105, 105)
                          .addComponent(toto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                          .addGap(32, 32, 32)
                          .addComponent(tutu, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                          .addContainerGap(235, Short.MAX_VALUE))
                  );
          
                  pack();
              }// </editor-fold>                        
          
              /**
               * @param args the command line arguments
               */
              public void lanceInterface() {
                  /* 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(Interface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
                  } catch (InstantiationException ex) {
                      java.util.logging.Logger.getLogger(Interface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
                  } catch (IllegalAccessException ex) {
                      java.util.logging.Logger.getLogger(Interface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
                  } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                      java.util.logging.Logger.getLogger(Interface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
                  }
                  //</editor-fold>
                  
                  /* Create and display the form */
                  java.awt.EventQueue.invokeLater(() -> {
                      setVisible(true);
                  });
                  
                  setTitle("journee");
                  
                          
                  
              }
              
              public void miseAJourChamps() {
                  javax.swing.JTextField essai ;
                  int j = 0;
                  
                  essai = (javax.swing.JTextField) this.getlistHeure(j);
                  System.out.println(essai);
                  essai.setText("toto");
                  //toto.setText("tutu"); 
              }    
          
              // Variables declaration - do not modify                     
              private javax.swing.JTextField toto;
              private javax.swing.JTextField tutu;
              // End of variables declaration                   
          
          }
          



          • Partager sur Facebook
          • Partager sur Twitter
            17 novembre 2019 à 16:50:46

            Tu définis lstHeure0] et lstHeur[1] avant d'avoir défini toto et tutu. Donc ils sont tous les deux null et c'est normal.

            Ca marchera mieux comme ça :

            public Interface() {
                initComponents();
                 
                lstHeure[0] = toto ;
                lstHeure[1] = tutu ;
            }

            Ou comme ça (tu as le choix) :

            private javax.swing.JTextField toto = new javax.swing.JTextField();
            private javax.swing.JTextField tutu = new javax.swing.JTextField();

            -
            Edité par Zachee54 17 novembre 2019 à 16:52:35

            • Partager sur Facebook
            • Partager sur Twitter

            Faire varier le nom d'un objet dans une boucle for

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown