Evolution du nombre de ligne d'un tableau en fonction de la saisie

Résolu
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008 - 2 juin 2008 à 10:54
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008 - 2 juin 2008 à 19:48
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

nosferaltu0 Messages postés 36 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 6 juin 2008
2 juin 2008 à 11:44
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
3
nosferaltu0 Messages postés 36 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 6 juin 2008
2 juin 2008 à 16:58
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
3
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
2 juin 2008 à 16:44
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.
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
2 juin 2008 à 19:48
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
0
Rejoignez-nous