Beberto56
Messages postés119Date d'inscriptionmardi 8 avril 2008StatutMembreDernière intervention22 décembre 2008
-
2 juin 2008 à 10:54
Beberto56
Messages postés119Date d'inscriptionmardi 8 avril 2008StatutMembreDernière intervention22 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.
nosferaltu0
Messages postés36Date d'inscriptionmardi 6 mai 2008StatutMembreDerniè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.
nosferaltu0
Messages postés36Date d'inscriptionmardi 6 mai 2008StatutMembreDerniè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.
Beberto56
Messages postés119Date d'inscriptionmardi 8 avril 2008StatutMembreDernière intervention22 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.