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] Ajouter une ligne dans un table triée


Sujet :

Composants Java

  1. #1
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut [JTable] Ajouter une ligne dans un table triée
    Bonjour,
    J'ai une JTable triable et ce que je veux c'est pouvoir ajouter des lignes vides à la fin de la table, chose faite dans le cas ou la table n'est pas triée mais lorsque je trie ma table l'ordre change dans tout les sens et j'arrive plus à faire un get du dernier élément (de la table triée).
    et apres mettre le focus dessus.
    voici comment je procede :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    private void Ajouter() {
    		if (table.isEditing())
    			if (table.getCellEditor() != null)
    				table.getCellEditor().stopCellEditing();
    		model.insertRow(table.getRowCount(), ajout_ligne_vide());
    		table.editCellAt(table.getRowCount() - 1, 0);
    		table.getEditorComponent().requestFocus();
    	}
    J'ai essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    table.convertRowIndexToModel(table.getSelectedRow());
    pour recuperer la ligne mais toujours rien j'arrive pas à chopper la derniere ligne de ma table triée (non trié cest un simple getRowCount())
    quelqu'un voit il une solution ?

  2. #2
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut
    en fait je viens de comprendre un pti peu le mecanisme c'est que quand je fais l'ajout de la ligne elle est bien ajoutée à la fin de ma table mais comme je trie par ordre décroissant ma ligne et tout en haut !!
    mais je vois toujours pas comment faire ?

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Points : 110
    Points
    110
    Par défaut
    plutot que de rechercher ta ligne tu devrais garder une référence sur cette ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maLigne = ajout_ligne_vide();
    model.insertRow(table.getRowCount(), maLigne);
    tu pourras ainsi accéder directement à ta ligne indépendament du tri.

    P.

  4. #4
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut
    Au fait ma fonction ajout_ligne_vide() son metier ce'st de me retourner un vecteur de valeur vide à n colonnes.
    et puis je pense que ce que tu me dis ne marchera pas dans le cas ou je tri ma table avant d'ajouter de ligne par contre je suis d'accord avec si tu rajoute AVANT LE TRI une ligne vide.
    euuh je suis pas sur de moi je vais tester !
    tu veux dire quoi pas par une reference, tout simplement l'indice de la derniere ligne ?

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Points : 110
    Points
    110
    Par défaut
    maLigne doit etre une propriété de ta classe contenant directement la Ligne que tu insert (pas son index).
    je n'ai pas l'api en tête mais un truc du genre

    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
    public class maclass {
    private Row maLigne = null;
     
    private void Ajouter() {
    		if (table.isEditing())
    			if (table.getCellEditor() != null)
    				table.getCellEditor().stopCellEditing();
                    maLigne = ajout_ligne_vide();
    		model.insertRow(table.getRowCount(), maLigne);
    		table.editCellAt(table.getRowCount() - 1, 0);
    		table.getEditorComponent().requestFocus();
    	}
     
    private Row getLigneVide(){
         return maLigne;
    }
    }
    Row etant la classe Swing contenant ta ligne (nom de classe à vérifier)
    voila

  6. #6
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut
    ok donc si j'ai bien compris, je dois faire un truc de ce genre :
    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
     
    private Vector maLigne = null;
     
    private void Ajouter() {
    		if (table.isEditing())
    			if (table.getCellEditor() != null)
    				table.getCellEditor().stopCellEditing();
                    maLigne = ajout_ligne_vide();
    		model.insertRow(table.getRowCount(), maLigne);
    		table.editCellAt(table.getRowCount() - 1, 0);
    		table.getEditorComponent().requestFocus();
    	}
     
    private Vector getLigneVide(){
         return maLigne;
    }
     
    private Vector ajout_ligne_vide() {
    		Vector vide = new Vector();
    		for (int i = 0; i < table.getColumnCount(); i++) 
    			vide.add("");
                    return vide;
    }
    avec ça je pense pas que t'as modifié grand chose à part remplacer l'appel de fonction.
    desole mais je crois que j'ai pas vraiment compris.
    c'est bien ça ?
    parceque ce qui pose probleme c'est l'index de la vue TRIEE et non pas la reference.

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Points : 110
    Points
    110
    Par défaut
    ok, peut etre je n'avais pas compris ce que tu voulais.
    En fait tu ne veux pas retrouver ta ligne nouvellement inséré, mais tu veux insérer ta ligne à la fin de ta table... point.

    dans ce cas, cas dépend comment ta table est trié...
    ta ligne implémente t'elle la classe Comparable?

    peux tu donner plus de code (notament la gestion du tri).

    P.

  8. #8
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    je crois que ce n'est pas possible, puisque dés que tu vas ajouter une ligne, elle sera incluse dans le tri immédiatement.

  9. #9
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut
    Je crois que Bassim a raison j'ai preque tout testé mais malheuresement le tri une fois qu'il est lancé c'est mort c'est automatique !
    voici comment je procede au tri :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    table.setAutoCreateRowSorter(true);
    j'ai pas customisé le tri parceque c pas le but de mon projet donc je crois que je vais abandonner cette option sauf si quelqu'un à une idée.
    voila, je crois que c'est dead !
    et j'ai oublié de vous remercier malgré c'est trés gentil

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Points : 110
    Points
    110
    Par défaut
    effectivement, il semble que tu n'ai aucune option dans la mesure ou setAutoCreateRowSorter te crée un nouveau TableRowSorter automatiquement.

    tu peux toujours rajouter un petit formulaire de saisie en dessous de ta table...

    P.

  11. #11
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut
    ça m'arrange pas troop et de toute façon c'etait juste pour faire joujou avec

    merci beaucoup guys !
    et maintenant j'ai autre chose à vous demander : http://www.developpez.net/forums/sho...84#post2773784

  12. #12
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    Je suis tombé sur ça complètement par hasard: empecher la dernière ligne d'être triée

    mais bon courage pour l'implémenter à ta sauce !

    En fait, il s'agit de jouer avec la classe DefaultRowSorter.ModelWrapper<M,I>

    Je n'ai pas beaucoup approfondis la question, donc je ne pourrais pas t'aider, en plus je suis (finalement) nul en anglais

    Si quelqu'un de calé en anglais, pouvais nous faire une petite traduction (parceque ça m'interresse moi aussi)

  13. #13
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut
    ohh merci Bassim, je vais lire ça demain et je te tienderai au courant merci bcp.
    alors que j'ai abandonée le fait de rajouter la ligne sans la triée la je reprend lol meme si c pas trop mechant vu ke c un projet d'etude.
    n'empeche que par curieusité je vais voir ton doc.
    merci et bon WE !

Discussions similaires

  1. [WD16] problème pour ajouter une ligne dans la table
    Par T1929D dans le forum WinDev
    Réponses: 3
    Dernier message: 02/08/2013, 23h39
  2. Ajouter une ligne dans une table?
    Par purplebamboo dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 06/05/2009, 15h46
  3. Comment ajouter une ligne dans un Jtable
    Par fefe69 dans le forum Composants
    Réponses: 1
    Dernier message: 10/03/2009, 12h57
  4. Ajouter une ligne dans une table
    Par JeanDan dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 09/12/2008, 10h48
  5. [DOM] Ajout dynamique d'une ligne dans un <table>
    Par Alzelus dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/05/2007, 18h05

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