Bonjour,
J'ai un problème que je comprends pas dans une JTable que j'utilise.
Mon objectif est de créer une table dans laquelle chaque cellule puisse contenir plusieurs lignes.
J'ai donc redéfinis mon renderer afin de transformer mes cases en JTextArea. Ca marche pas trop mal... tant que mon texte n'est pas trop long :
Comme vous avez pu le voir au bout d'un moment il y a des lignes qui sont rajoutées alors qu'il n'y a ni retour à la ligne, ni aucun autre caractère invisible. Mon JTextArea n'a pas la taille attendu ! Les lignes A, A1, A2, et A4 sont correctes, mais la A3 est beaucoup trop grande.
Pour adapter mes hauteurs de lignes j'utilise simplement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public class MonNouveauRenderer extends JTextArea implements TableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { /* Mise en forme /* Etc... */ // Si mon JText a besoin de place j'aggrandis la ligne de la JTable if (table.getRowHeight(row) < this.getPreferredSize().height) table.setRowHeight(row, this.getPreferredSize().height); return this; } }
J'ai fait mon curieux de manière à afficher les valeurs qui m'intéressaient, je trouve des valeurs cohérentes :
Case : ligne 0 colonne 0
46.0 PreferedSize du JTextArea
16 Taille de la ligne de la JTable
Case : ligne 0 colonne 1
29.0 PreferedSize du JTextArea
46 Taille de la ligne de la JTable
Case : ligne 0 colonne 2
29.0 PreferedSize du JTextArea
63 Taille de la ligne de la JTable
Plus loin par contre je trouve des valeurs aberrantes pour la hauteur de mes JTextArea :
Case : ligne 1 colonne 1
988.0 PreferedSize du JTextArea
44 Taille de la ligne de la JTable
Case : ligne 1 colonne 2
444.0 PreferedSize du JTextArea
76 Taille de la ligne de la JTable
Je soupçonne mon problème de venir de ces valeurs mais j'ai bien peur de ne pas comprendre d'où elles sortent, comment la "prefered size" est calculée.
Au final j'aimerais connaitre la hauteur de mon contenu et pouvoir l'affecter à mes composants qui forment mon renderer.
Merci d'avance pour vos conseils.
Raphaël N.
Partager