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

Composants Java Discussion :

Conserver les éléments d'une JTable


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 49
    Points : 20
    Points
    20
    Par défaut Conserver les éléments d'une JTable
    Salut

    Je voudrais savoirs si c'est possible de conserver les éléments d'une JTable lorsque l'on quitte puis relance le programme.

    En fait, j'ai créé un bouton ajouter qui permet de sélectionner un fichier et de l'ajouter au tableau.
    En réitérant cette manip, je remplis ma JTable.

    Mais ce que j'aimerais faire, c'est que lorsque je quitte le programme et que je le relance, mon tableau soit identique à la derniere fois, cad déjà rempli, et que je puisse ajouter d'autres éléments et ainsi de suite.

    Est-ce possible? Merci

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Salut,

    pour cela, faudrait que tu stockes le contenu de ton tableau quelque part et qu'au lancement, tu le recharges.

    Tu pourrais imaginer stocker ca dans :
    • Un simple fichier texte
    • Un fichier xml
    • Une base de données
    • ....

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 49
    Points : 20
    Points
    20
    Par défaut
    OK merci.

    Je pense le faire avec un fichier texte.

    J'arrive bien à écrire dans le fichier texte, pas de problème.
    Par contre je ne sais pas comment faire pour récupérer les différents éléments du fichier texte pour le mettre dans ma JTable.

    Comment faire pour qu'il sache la séparation entre 2 fichiers?
    Il faut que j'écrive à la ligne à chaque fois dans mon .txt?
    Mais comment récupérer une seule ligne à la fois?

    merci

  4. #4
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Tu peut employer un bufferedReader, qui te permet avec la méthode readLine, de lire ton fichier ligne par ligne

    Ce que je ferais moi, en travaillant avec un fichier texte, c'est d'écrire chaque ligne du JTable dans une ligne du fichier et les séparer par un caractère spécial ou par une chaine de caractère que je suis sur de ne pas utiliser dans une case du JTable

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 49
    Points : 20
    Points
    20
    Par défaut
    J'arrive bien à lire mon fichier texte ligne par ligne, mais seulement lorsque je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(texte);
    Comment faire pour insérer une seule ligne dans une ligne de mon tableau.
    Je ne sais pas quoi mettre dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    model.addRow(new Object[]{new File(...),
               new File(...)});
    (mon tableau a 2 colonnes)

    Si je fais par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    model.addRow(new Object[]{new File(texte),
               new File(...)});
    texte étant un string, cela affiche tout mon fichier à la suite dans la 1ere cellule de mon tableau, en ne considérant plus les sauts de ligne

  6. #6
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Tu ajoutes tout le fichier dans le tableau ??? Tu devrais ajouter juste le nom...

    Ensuite, si ton fichier est comme ca :

    fichier1&autre
    fichier2&autre
    fichier3&autre
    ...
    Tu boucle sur chaque ligne et ensuite pour la passer à ton tableau tu peut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ligne = fichier.readLine();
    Object[] row = new Object[]{ligne.split("&")[0], ligne.split("&")[0]};
    model.addRow(row);
    Qu'est ce que tu affiches exactement dans ton JTable ?

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 49
    Points : 20
    Points
    20
    Par défaut
    C'est bon, j'ai réussi en faisant une boucle for.

    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
    try 
            { 
     
                 String adressedufichier = System.getProperty("user.dir") + "<a href="file://\\monfichier.txt" target="_blank">\\monfichier.txt</a>"; 
     
                FileReader fr = new FileReader(adressedufichier); 
                BufferedReader br = new BufferedReader(fr); 
     
                String texte1 = "";
                String texte2 = "";
                int a = 0; 
                    for(a=0; a<5; a++) 
                    { 
                        texte1 = br.readLine();
                        texte2 = br.readLine();
                        CopyFrame.model.addRow(new Object[]{new File(texte1),
                       new File(texte2)});
     
                    } 
     
     
                br.close();   
     
            } 
            catch(IOException ioe){System.out.println("erreur : " + ioe);}
    Par contre 2 questions:
    - Comment connaitre le nombre de ligne, pour mettre en argument de fin de ma boucle a<??? (j'ai séparé chaque élément par un "\n" dans mon fichier texte, je ne les ai pas séparé par &)

    -Ca marche mais j'ai pourtant une erreur dans ma console, un NullPointerexception. d'ou cela peut-il provenir?

    merci

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 49
    Points : 20
    Points
    20
    Par défaut
    Dans ma JTable j'affiche un fichier dans la 1ere colonne, et un dossier lui correspondant (dossier dans lequel le fichier sera copié suite à des processus suivants) dans la 2eme colonne.

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 49
    Points : 20
    Points
    20
    Par défaut
    J'ai trouvé d'ou provenait l'exception, c'est justement à cause de l'argument de ma boucle.

    Si je mets a<2, il n'y a plus d'erreur, car j'ai pour l'instant 4 éléments dans mon .txt, donc 2 lignes ma JTable

    Du coup, il faut maintenant que je puisse récupérer le bon nombre suivant l'évolution de mon .txt.

  10. #10
    Membre du Club Avatar de matzeus
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 41
    Points
    41
    Par défaut
    public int CompteNbLigne(String NomFic)
    {
    File fichier = new File(NomFic);
    int TailleFic=0;

    try
    {
    BufferedReader in = new BufferedReader(new FileReader(fichier));
    String ligne;

    while((ligne=in.readLine())!=null)
    TailleFic++;
    }
    catch (Exception e)
    {
    e.printStackTrace();
    System.err.println ("erreur à l'ouverture du fichier dans CompteNbLigne");
    }

    TailleFic=TailleFic-1;

    return TailleFic;

    }

    tu peux essayer ca pour compter le nombre de ligne...
    c'est sur, ca te fait ouvrir 2 fois ton fichier, mais c'est efficace!

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 49
    Points : 20
    Points
    20
    Par défaut
    C'est bon, ça marche nickel

    Merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trier les éléments d'une CListCtrl
    Par hanane_iaai dans le forum MFC
    Réponses: 21
    Dernier message: 15/10/2007, 04h52
  2. Réponses: 4
    Dernier message: 26/07/2007, 13h41
  3. [JTABLE]trier et filtrer les données d'une jTable
    Par mehdi82 dans le forum Composants
    Réponses: 4
    Dernier message: 15/12/2005, 17h59
  4. [TestStand] Compter les éléments d'une chaîne de caractères
    Par capblans dans le forum Autres langages
    Réponses: 2
    Dernier message: 29/04/2005, 09h29
  5. Réponses: 2
    Dernier message: 11/08/2003, 09h43

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