Récupérer donnes d'un fichier texte pour les mettre dans une JTable [Résolu]

Messages postés
898
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
26 juillet 2007
- - Dernière réponse : chkiouamed
Messages postés
3
Date d'inscription
mercredi 17 juillet 2013
Statut
Membre
Dernière intervention
19 juillet 2013
- 19 juil. 2013 à 14:06
Bonjour,

j'ai beaucoup de mal avec les JTable, j'aimerais simplement lire les lignes d'un fichier texte et les mettre dans une JTable.
La structure du fichier texte est la suivante:
text|#|text2|#|text3|#|text4|#|text5|#|text6
text|#|text2|#|text3|#|text4|#|text5|#|text6
etc...

J'aimerais que ce soit mis dans une Jtable, mais je n'y arrive pas !!!

Comment faire?

Merci !!!

Philippe
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
5340
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
3 septembre 2019
87
3
Merci
Salut,

enfait c'est pas super complex voici un exemple de comment tu pourrais faire :

import java.io.FileInputStream;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Test extends JFrame{
    private static final long    serialVersionUID    = 1802199483736051124L;

    public Test(){
        DefaultTableModel model = new DefaultTableModel();
       
        for(int i = 1; i < 7; i++)//on place les titres
            model.addColumn("Column " + i);
        try {
            readFile(model);//lecture du fichier
        } catch (Exception e) {
            e.printStackTrace();
        }
       
        setContentPane(new JScrollPane(new JTable(model)));
        setSize(800, 600);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
   
    public void readFile(DefaultTableModel model) throws Exception{
        Scanner sc = new Scanner(new FileInputStream("data.txt"));//on ouvre le fichier pour le lire
        while(sc.hasNext()){//tant qu'il y a des choses à lire
            StringTokenizer token = new StringTokenizer(sc.nextLine(), "|#");//on split une ligne en fonction de | et # pour ne garder que le texte
            Vector<String> rowData = new Vector<String>();
            while(token.hasMoreTokens())//lecture des token et on les mets dans le vecteur
                rowData.add(token.nextToken());
            model.addRow(rowData);//on ajoute la ligne
        }
        sc.close();//fini :)
    }
   
    public static void main(String[] args) {
        new Test().setVisible(true);
    }
}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 194 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Twinuts
Messages postés
898
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
26 juillet 2007
2
0
Merci
Merci beaucoup, c'est exactement ce que je cherchais ! J'avais un problème avec une erreur de cast que je n'arrivais pas à résoudre depuis ce matin.

Merci !
Commenter la réponse de z980x
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
32
0
Merci
Salut:

Une autre solution consiste à passer par la classe abstraite AbstractTableModel.
Commenter la réponse de Ombitious_Developper
Messages postés
5340
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
3 septembre 2019
87
0
Merci
Salut,

c'est ce que je fais en passant par DefaultTableModel vu que c'est la classe AbstractTableModel en plus évolué

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Commenter la réponse de Twinuts
Messages postés
3
Date d'inscription
mercredi 17 juillet 2013
Statut
Membre
Dernière intervention
19 juillet 2013
0
Merci
rak m3allleeeeeeeeeeeeeeeeeeeeee Twintus :)))
Commenter la réponse de chkiouamed