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 :

JTable dynamique : ajouter des lignes


Sujet :

Composants Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 116
    Points : 71
    Points
    71
    Par défaut JTable dynamique : ajouter des lignes
    Un problème deja abordé 50 fois... mais je ne trouve de solution "sur-mesure". (ca fait qqes mois que j'ai plus touché au java et là je suis comme un poisson agonisant sur le sol)

    mon problème est le suivant :

    J'ai un JTable (au départ vide). Et je veux y ajouter des lignes au fur et a mesure. Un bouton Ajouter affiche un formulaire à remplir et puis les données de ce formulaire vont creer une nouvelle ligne du tableau.

    Y'a qqes mois j'avais utilisé des Jtable donc je me suis empressé de reprendre mon code... tout va bien (afficher, trier avec un table sorter, etc..) mais je n'arrive pas a ajouter des datas. (j'utilise un model)
    Le JTable que j'utilisais avant permettait d'avoir une sensation de dynamisme car j'avais un fichier avec des info, et suivant certains critères je prenais qqes éléments.

    Dans ce cas, je n'ai pas d'intermédiaire, cela doit passer en premier lieu par le tableau (pour ne pas sauvegarder les changements inutilement)

    J'ai pensé faire une méthode addLigne. qui créerait un nouveau tableau de data 'data1' = (data.length + 1), je le remplit avec le tableau d'origine et ajoute ma ligne en fin de tableau; ensuite je retranfere tout dans le "data" et puis un firequelquechose pour signifier des changements.
    Est-ce la bonne voie à suivre???

  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
    Pour les tableaux dynamiques comme tu le dis, il vaut mieux que tu emploies une ArrayList pour le stockage de données, ainsi, il te sera facile d'ajouter une ligne

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par koolway
    J'ai pensé faire une méthode addLigne. qui créerait un nouveau tableau de data 'data1' = (data.length + 1), je le remplit avec le tableau d'origine et ajoute ma ligne en fin de tableau; ensuite je retranfere tout dans le "data" et puis un firequelquechose pour signifier des changements.
    Est-ce la bonne voie à suivre???
    Oui. Mais tu devrais utiliser un ArrayList plutôt qu'un tableau, car cela te facilitera grandement la tâche...

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        public void addLigne(Object value) {
            this.list.add(value);
            int rowIndex = list.size()-1;
            fireTableRowsInserted(rowIndex, rowIndex);
        }
    a++

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 116
    Points : 71
    Points
    71
    Par défaut
    ok j'vais faire ça...

    merci a vous!

    PS : je mettrai en "résolu" qd je ca sera finit

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 116
    Points : 71
    Points
    71
    Par défaut
    au risque de parraitre ingrat

    je me suis dit : jvais qd meme ecrire mes 2-3 lignes avant de tester les arraylist.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        	Object[][] data1 = new Object[data.length+1][4];
        	for(int i = 0; i<data.length; i++){
        		for(int j = 0; j<4; j++){
        			data1[i][j]=data[i][j];
        		}
        	}
        	data1[data.length][0] = "bazeae";
    		data1[data.length][1] = "bezarzer";
    		data1[data.length][2] = "baazea";
    		data1[data.length][3] = "bazeret";
    		data = new Object[data1.length][4];
    		System.arraycopy(data1,0,data,0,data1.length);
    		this.fireTableDataChanged();
    bref j'ai mis ca ds une méthode add(vector v) et ca marche.
    je vais qd meme regarder les arraylist comme ca je mourerai (un tout petit peu) moins con.

    Vu que c'est un programme fait pour une comptabilité très sommaire.
    Quelle somme pour quelle date, quelle n° de facture... et que c'est pour "ouvrir un fichier contenant les factures","ajouter 2-3 factures", "sauver", fermer le programme... ca bouffe pas des masses.

    pfffffffffff la je suis en train de faire ce que je déteste : demander de l'aide, on avoir et suivre sa solution comme un gros con. vraiment désolé

    Je vous jure que je vais regarder les arraylist lol

    (comment?? j'en fais trop?? lol)

    merci en tous cas

  6. #6
    Membre du Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Points : 51
    Points
    51
    Par défaut
    Bonjour,

    J'ai le même problème. J'ai besoin d'un Jtable dynamique, j'ai tout de suite pensé aux arraylist, sauf que jtable ne les prends pas en paramètre dans son constructeur... suis-je vraiment obligé de passer par un double tableau ? Ou existe-t-il un moyen de contourner ?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    des indices :
    regarde le troisième message et cherche du côté de TableModel (j'suis sympa (g fait un ctrl+g dans eclipse) vas voir AbstractTableModel)

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

Discussions similaires

  1. ajouter des lignes dynamiquement dans un JTable
    Par Jolt0x dans le forum Composants
    Réponses: 6
    Dernier message: 15/05/2014, 16h32
  2. ajout des lignes a une jtable
    Par totomimi dans le forum Composants
    Réponses: 1
    Dernier message: 24/06/2009, 16h26
  3. ajouter des lignes dans un tableau dynamique
    Par yviii dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/06/2007, 12h15
  4. ajouter des lignes dans un tableau dynamique
    Par yviii dans le forum Windows
    Réponses: 1
    Dernier message: 20/06/2007, 11h28
  5. [JTable] Un tableau dynamique (ajout de lignes)
    Par fraoustin dans le forum Composants
    Réponses: 3
    Dernier message: 09/10/2005, 00h27

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