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.
A voir également:
Evolution du nombre de ligne d'un tableau en fonction de la saisie
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.
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.
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.