Comment personnaliser JTable

mina1985 Messages postés 2 Date d'inscription vendredi 7 novembre 2008 Statut Membre Dernière intervention 7 juin 2009 - 15 mai 2009 à 15:36
manlap Messages postés 17 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 28 juin 2010 - 18 mai 2009 à 10:25
Bonjour

 
j'utilise JTable pour afficher des données, mais ces données
sont un peu longues et je n'arrive pas à visualiser toute l'information
dans les cellules de JTable. il y a une partie qui reste invisible.

en effet, les cellules de mon tableau contiennent des informations de
type string qui sont très longues donc elles ne sont pas visibles il
reste toujours une partie cachée et ce que je veux faire c'est d'adapter la taille de chaque cellule à son contenu

 
Comment personnaliser ma table pour qu'elle m'affiche dans chaque cellule la totalité de son contenu ?

 
Est ce que JTable posséde des méthodes pour redimensionner ces
cellules pour qu'elle affiche tout le contenu ?
comment faire svp ?

 
Merci d'avance

1 réponse

manlap Messages postés 17 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 28 juin 2010
18 mai 2009 à 10:25
Bonjour,

Sur un changement Model de la JTable public

void tableChanged(TableModelEvent e)
Il faut que tu calcules pour chaque colonne la taille préférée de cette dernière.

 public void tableChanged(TableModelEvent e) {
  super.tableChanged(e);
  
  TableColumnModel modeleColonne = this.getColumnModel();
  TableModel modele = this.getModel();
  int total = modeleColonne.getColumnCount();
  
  Font maFont = new Font(null, Font.PLAIN, 14);
  FontMetrics fontMetrics = getFontMetrics(maFont);
  
  // balaie toutes les colonnes
  for(int i = 0; i < total; i++) {
   int taille = 0;
   int total2 = modele.getRowCount();
   
   // teste toutes les lignes d'une colonne et conserve la plus grande cellule
   for(int j = 0; j < total2; j++){
    // Partie determinant la taille de la cellule de ligne j et de colonne i
    if (modele.getValueAt(j, i) != null) {
     int taille2 = fontMetrics.stringWidth(modele.getValueAt(j, i).toString());
     if (taille2 > taille) {
      taille = taille2;
     }
    }
   }
   modeleColonne.getColumn(i).setPreferredWidth(taille);
  }
 }
0
Rejoignez-nous