Evolution du nombre de ligne d'un tableau en fonction de la saisie [Résolu]

Signaler
Messages postés
119
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
22 décembre 2008
-
Beberto56
Messages postés
119
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
22 décembre 2008
-
Bonjour,

voici mon problème, j'ai mis en place un jTable et un jTextField. Le but de mon application est de faire évoluer le nombre de ligne de mon tableau en fonction de la saisie dans mon jTextField.

Pour l'instant, j'ai créé une méthode qui permet l'ajout de lignes mais je n'arrive pas à trouver une méthode qui fasse en sorte que:

          - si je saisi 4 mon tableau passe de 1 à 4 lignes
          -si ensuite je saisie 2, je voudrais qu'il repasse de 4 à 2 et il passe de 4 à 6......

En fait, il ne supprime pas de ligne pour l'instant il ne fais qu'en rajouter. Voici la méthode que j'ai ms en place:

    public void createRows()
    {
        String texte = field.getText();
        if(texte.equals(""))
        {
            texte="0";
        }
        int count = new Integer(texte).intValue();
        DefaultTableModel modele = (DefaultTableModel)table.getModel();
        for (int i = 1; i< count; ++i)
        {
            modele.addRow(new Object[]{"","","",""});
        }
     }

Siquelqu'un peut me la compléter afin que lapplication affiche le nombre de lignes désirées saisies ou me renseigner, je lui en serais reconnaissant.

Merci d'avance.

Julien.

4 réponses

Messages postés
36
Date d'inscription
mardi 6 mai 2008
Statut
Membre
Dernière intervention
6 juin 2008

En fait c'est normal puisque tu ne fais qu'ajouter des lignes mais tu peux comparer le nombre de lignes désirées au nombre de lignes présentes, et, soit supprimer celles en trops (avec removeRow(int i)), soit ajouter celles qui manquent.

bashfr.org
Messages postés
36
Date d'inscription
mardi 6 mai 2008
Statut
Membre
Dernière intervention
6 juin 2008

public void createRows(){
        String texte = field.getText();
    try{
        int count = new Integer.parseInt(texte);
        DefaultTableModel modele = (DefaultTableModel)table.getModel();
        int nb_row_presente = modele.getRowCount();
       
        if(nb_row_presente<count){
            for (int i = nb_row_presente; i< count; ++i)
            {
                modele.addRow(new Object[]{"","","",""});
            }
        }
        else {
            for (int i = nb_row_presente-1; i >= count; --i)
            {
                modele.removeRow(i);
            }
        }
   }
   catch(NumberFormatException nbfe){
       texte="0";
   }
}

après je n'ai pas testé mais c'est une façon de faire, si ça ne marche pas il y a toujours la possibilité recréer toute la JTable mais je pense que ce soit une bonne idée.

bashfr.org
Messages postés
119
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
22 décembre 2008

Re,

Peut tu me mettre un exemple de code concret stp...Le code de la méthode correspondante m'interresserais car je n'y arrive pas.

Merci d'avance.

Julien.
Messages postés
119
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
22 décembre 2008

Re,

je te remerci ta methode marche d'enfer mais tu n'étais pasq obligé de mettre parseInt sa me donnais une faute j'ai juste mis:
int count new Integer(texte); à la place de int count new Integer.parseInt(texte);

En tous cas tu m'as enlever une belle épine du pied.

Merki c cool^^.

Julien