Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème ArrayList dans Jlist

Sujet résolu
    16 octobre 2018 à 20:24:05

    Bonsoir, j'espère que tout le monde passe une bonne soirée. Voilà j'écris ce message car je rencontre un problème avec la jlList de mon ihm. En POO je suis censé créer une JList (lstVilles) qui affiche le nom des villes de mon arrayList LesVilles. J'ai beau avoir cherché pas mal de solutions, quand je rentre ceci :

    public class FrameVH extends javax.swing.JFrame {
    
        static private String AnnéeCourante;
        private Object args;
        private ArrayList<Habitant> LesHabitants = new ArrayList<>();
        private ArrayList<Ville> LesVilles = new ArrayList<>();
    
        public FrameVH() {
            initComponents();
    
    /*        AnnéeCourante = JOptionPane.showInputDialog(args, "Saisir l'année en cours : ");
            this.pnlHabitantGroup(false);
            this.pnlVilleGroup(false);
    
        }*/
    
        public void AjoutVilles() {
            Ville maVille1 = new Ville("Paris");
            Ville maVille2 = new Ville("Levallois");
            Ville maVille3 = new Ville("Asnières");
            LesVilles.add(maVille1);
            LesVilles.add(maVille2);
            LesVilles.add(maVille3);
    
        }
    
        public void test() {
          DefaultListModel ModeleTest = new DefaultListModel();
            for (Ville maVille : LesVilles) {
                ModeleTest.addElement(maVille.getNomVille());
            }
            this.lstVilles.setModel(ModeleTest);                          
        }

    Celui ne m'affiche pas le contenu de mes trois villes dans ma Jlist... Cela vient-il du scrollpane ? L'autre méthode .toarray() marcherait-elle mieux. Je précise qu'en quà de difficultés, je pourrai biensûr donner mes classes.

    Merci beaucoup de votre aide

    • Partager sur Facebook
    • Partager sur Twitter
      17 octobre 2018 à 8:48:43

      Quand fais-tu l'appel à ta méthode AjoutVilles pour remplir ta collection de villes ? Tant que tu ne l'as pas fait, ta collection est vide. Typiquement, ton test produit une liste vide dans ton objet ModelTest

      (Note : ModelTest étant une instance de la classe DefaultListModel, le M devrait plutot être en minuscule pour éviter les confusions de lecture du code).

      • Partager sur Facebook
      • Partager sur Twitter
        17 octobre 2018 à 15:15:45

        Merci effectivement, mon problème vient du fait qu'à ma connaissance, je pensais devoir faire une méthode pour chaque étape de mon travail. Alors qu'en fait, la seule manière que j'ai de pouvoir avoir directement ma liste des trois villes à l'ouverture de l'application, c'est de mettre tous ces elements dans la méthode de ma frame après le initComponents() comme ceci : 

         public FrameVH() {
                initComponents();
        
               /* AnnéeCourante = JOptionPane.showInputDialog(args, "Saisir l'année en cours : ");
                this.pnlHabitantGroup(false);
                this.pnlVilleGroup(false); */
                
                
                Ville maVille1 = new Ville("Paris");
                Ville maVille2 = new Ville("Levallois");
                Ville maVille3 = new Ville("Asnières");
                LesVilles.add(maVille1);
                LesVilles.add(maVille2);
                LesVilles.add(maVille3);
                DefaultListModel ModeleTest = new DefaultListModel();
                for (Ville maVille : LesVilles) {
                    ModeleTest.addElement(maVille.getNomVille());
                }
                this.lstVilles.setModel(ModeleTest);         
            }

        Est-ce la seule solution dont je dispose ? (j'ai changé le modelTest, merci pour l'info)

        • Partager sur Facebook
        • Partager sur Twitter
          17 octobre 2018 à 15:57:57

          L'organisation de ton code ne dépend que de toi, mais il faut que ce code soit exécuté pour qu'il produise le résultat attendu.

          Certaines méthodes sont exécutées systématiquement, comme le constructeur, mais tu peux très bien segmenter le contenu du constructeur en plusieurs méthodes, pour des questions de lisibilité, de maintenabilité...mais dans ce cas tu dois appeler les méthodes correspondantes depuis ton constructeur.

          L'arbitrage assez courant de cette question est assez flou, mais voici quelques points de repères :

          => Il y a lieu de faire une fonction/méthode si un bout de code est amené à servir à plusieurs endroits...si c'est un code d'intialisation, c'est rarement le cas mais ça peut arriver ;

          => Pour autant, si l'initialisation devient très lourde, longue à lire (plus d'une 50aine de lignes par exemple), il devient pertinent de morceler ce code en plusieurs fonctions, par thématique, avec de bons commentaires, de sorte d'avoir des algorithmes plus lisibles et faciles à comprendre pour un développeur qui reprendrait ton code plus tard...mais ces considérations sont organisationnelles / méthodologiques, et pas techniques.

          • Partager sur Facebook
          • Partager sur Twitter
            17 octobre 2018 à 17:57:16

            D'accord, aucun problème. Merci beaucoup pour ton aide en tout cas.
            • Partager sur Facebook
            • Partager sur Twitter

            Problème ArrayList dans Jlist

            × 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