Partage
  • Partager sur Facebook
  • Partager sur Twitter

remplir un DefaultTableModel a partir d'un fichier

j'ai besoin d'aide..

Sujet résolu
    24 mai 2011 à 15:30:40

    Bonjour bonjour,

    Voila j'aimerais utiliser un JTable à partir d'un DefaultTableModel mais je n'arrive pas a remplir le model à partir d'un fichier

    Si je crée directement mon JTable sans modèle, cela fonctionne. Et quand je fais un modèle et que je crée mon JTable à partir de ce modèle, ça n'affiche plus rien à part le nom des colonnes, les lignes ne sont pas remplient.

    Merci de votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2011 à 22:30:50

      Une fois que tu as récupére les infos de ton fichier, tu peux faire un myTable.setModel();
      et dans setModel, tu passe un new AbstractTableModel.
      Au niveau des modèles, ils ont besoin de deux tableaux, un pour les noms des colonnes et un pour le contenu mais sans ton code, je ne peux pas t'aider davantage.
      • Partager sur Facebook
      • Partager sur Twitter
        25 mai 2011 à 8:30:08

        OK donc je vais te montrer mon code, celui la défini juste un JTable et je récupère les données depuis un fichier .csv, jusque la ça fonctionne très bien.

        String[][] donnees=new String[220][11];
        String[] cols = {"Nom", "Prenom","sexe","classe","classe","1","2","3","4","5","6"};
        
        JTable tab = new JTable(donnees,cols);
        
        private void createTable() {
            //////////////////    
        	try
        	{
        		BufferedReader fichier =new BufferedReader(new FileReader("C:/Users/Loic/Desktop/"+b));
        		String ligne;
        		StringTokenizer st;
        		int i=0;
        		
        		while ((ligne = fichier.readLine())!=null )
        		{
        			st = new StringTokenizer(ligne,";\n");
        
        		     if(i>=0)
        		      {
        		    		donnees [i][0]= st.nextToken();
        		    		donnees [i][1]= st.nextToken();
        		    		donnees [i][2]= st.nextToken();
        		    		donnees [i][3]= st.nextToken();
        		    		donnees [i][4]= st.nextToken();
        		    		donnees [i][5]= st.nextToken();
        		    		donnees [i][6]= st.nextToken();
        		    		donnees [i][7]= st.nextToken();
        		    		donnees [i][8]= st.nextToken();
        		    		donnees [i][9]= st.nextToken();
        		    		donnees [i][10]= st.nextToken();
        		    		
        			  }
        		     i++;
        
        		}
        		fichier.close();
        	}
        	catch (Exception e){JOptionPane.showMessageDialog(null, e.getMessage());}
        	
        	JScrollPane sp = new JScrollPane(tab);
        	Panel1.add(sp);
        
        	le.getContentPane().add(Panel1, BorderLayout.WEST);
            
            
            ////////////////////
        
        	tab.setDragEnabled(true);
        	tab.setDefaultRenderer(Object.class, new jTableRender());
            tab.setTransferHandler(new TableTransferHandler());
            tab.getTableHeader().setReorderingAllowed(false);
            tab.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
        
        }
        



        Par contre, mon soucis est que j'ai besoin de définir mon tableau comme un DefaultTableModel, donc j'ai essayé de déclarer un modèle et de mettre ma JTable avec ce modèle.

        DefaultTableModel model = new DefaultTableModel(donnees,cols);
        
        JTable tab = new JTable(model);
        


        Mais je ne récupère que les noms des colonnes, je ne récupère pas les données du fichiers .csv

        Merci de ton aide.
        • Partager sur Facebook
        • Partager sur Twitter
          25 mai 2011 à 8:47:11

          Est-ce que le tableau est rempli?
          fais des syso pour voir.
          • Partager sur Facebook
          • Partager sur Twitter
            25 mai 2011 à 9:37:16

            Donc j'ai affiché le tableau dans la console, et le tableau est bien rempli.
            Il y a juste un problème pour l'afficher dans la JTable.
            • Partager sur Facebook
            • Partager sur Twitter
              25 mai 2011 à 9:53:19

              C'est normal. En effet, le tableau que tu passes en paramètre à ta JTable est un tableau vide. Tu
              ne passe jamais le nouveau tableau à ta JTable.

              String[][] donnees=new String[220][11];
              String[] cols = {"Nom", "Prenom","sexe","classe","classe","1","2","3","4","5","6"};
              
              JTable tab = new JTable(donnees,cols);
              
              private void createTable() {
                  //////////////////    
              	try
              	{
              		BufferedReader fichier =new BufferedReader(new FileReader("C:/Users/Loic/Desktop/"+b));
              		String ligne;
              		StringTokenizer st;
              		int i=0;
              		
              		while ((ligne = fichier.readLine())!=null )
              		{
              			st = new StringTokenizer(ligne,";\n");
              
              		     if(i>=0)
              		      {
              		    		donnees [i][0]= st.nextToken();
              		    		donnees [i][1]= st.nextToken();
              		    		donnees [i][2]= st.nextToken();
              		    		donnees [i][3]= st.nextToken();
              		    		donnees [i][4]= st.nextToken();
              		    		donnees [i][5]= st.nextToken();
              		    		donnees [i][6]= st.nextToken();
              		    		donnees [i][7]= st.nextToken();
              		    		donnees [i][8]= st.nextToken();
              		    		donnees [i][9]= st.nextToken();
              		    		donnees [i][10]= st.nextToken();
              		    		
              			  }
              		     i++;
              
              		}
              		fichier.close();
              	}
              	catch (Exception e){JOptionPane.showMessageDialog(null, e.getMessage());}
              	
              	JScrollPane sp = new JScrollPane(tab);
              	Panel1.add(sp);
              
              	le.getContentPane().add(Panel1, BorderLayout.WEST);
                  
                  
                  ////////////////////
              
              	tab.setDragEnabled(true);
              	tab.setDefaultRenderer(Object.class, new jTableRender());
                  tab.setTransferHandler(new TableTransferHandler());
                  tab.getTableHeader().setReorderingAllowed(false);
              //Essaie avec cette ligne
                  tab.setModel(donnees, cols);
              
              //Cette ligne va poser problème puisque c'est une JTable, pas une JList
                  tab.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
              
              }
              
              • Partager sur Facebook
              • Partager sur Twitter
                25 mai 2011 à 10:01:40

                J'ai une erreur, il n'aime pas
                tab.setmodel(donnees,cols);
                

                donc j'ai essayé
                tab.setmodel(model);
                


                mais ça ne change rien.


                Au faite, j'ai pas changé au début mais je déclare mon tableau comme ça maintenant:

                DefaultTableModel model = new DefaultTableModel(donnees,cols);
                	
                	JTable tab = new JTable(model);
                


                • Partager sur Facebook
                • Partager sur Twitter
                  25 mai 2011 à 10:16:51

                  Ton model, est ce que tu le met à jour dans la méthode createTable?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 mai 2011 à 10:19:19

                    Voila j'ai resolu le probleme.

                    J'ai juste ajouter dans ma fonction CreateTable et ça fonctionne

                    tab.setModel(new DefaultTableModel(donnees, cols));
                    


                    Merci encore pour ton aide omegas27
                    • Partager sur Facebook
                    • Partager sur Twitter

                    remplir un DefaultTableModel a partir d'un fichier

                    × 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