Salut
J'ai deux question concernant les JTable
- Est-il possible de définir la largeur de mes colonnes (en px ou autre) ?
- Si un texte contenu dans une cellule est trop long, peut-on le forcer à revenir à la ligne ?
a++
Salut
J'ai deux question concernant les JTable
- Est-il possible de définir la largeur de mes colonnes (en px ou autre) ?
- Si un texte contenu dans une cellule est trop long, peut-on le forcer à revenir à la ligne ?
a++
Largeur de colonnes :
Par défaut, les colonnes des JTables ont toutes la même largeur. Pour changer cela, il te faudra dans un premier temps désactiver le retaillage automatique des colonnes. Puis, dans un second temps, tu pourras changer la largeur de chacune de tes colonnes.
Voilà un exemple où la 1ère colonne de la table prendra une largeur de 100 pixels.
Cellule avec contenu trop long :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 int rows = 3; int cols = 3; JTable table = new JTable(rows, cols); // Disable auto resizing table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // Set the first visible column to 100 pixels wide int vColIndex = 0; TableColumn col = table.getColumnModel().getColumn(vColIndex); int width = 100; col.setPreferredWidth(width);
Si dans ta table les cellules sont en consultation (donc non éditable), tu devras redéfinir le renderer des cellules pour lesquelles tu souhaites avoir un contenu long. (si elles sont aussi editables, tu devras redéfinir un CellEditor adéquate) Pour ton renderer, il devra hériter de JTextArea de façon à pouvoir s'afficher sur plusieurs lignes. (cf : http://www.developpez.net/forums/viewtopic.php?t=449009 ) Par contre, il te faudra aussi changer la hauteur des lignes de la JTable (donc des cellules qui contiennent ton propre renderer).
La hauteur des cellules d'une JTable est fixée pour toutes les lignes. Donc le contenu de chacune de tes cellules sera forcément limité.
Code : Sélectionner tout - Visualiser dans une fenêtre à part maTable.setRowHeight(60)
"Un clavier AZERTY en vaut deux."
http://www.stateofmind.fr (Java, Maven2, Swing, Design Patterns, ...)
Regarde dans mon topic précédent et tu vera que j'ai fait une méthode qui permet de donner une hauteur spécifique à chaque ligne.Envoyé par Oliveuh
tu as 2 possibilités pour la méthode setRowHeight() :
setRowHeight(int row, int height)
setRowHeight(int height)
Ca à l'air d'aller.
Est-ce qu'il est possible de définir la largeur d'une (plusieures) colonne(s) et que toutes celles qui n'ont pas de largeur définie occupe l'espace restant ?
EDIT : Problème : est-ce qu'il est normal que je ne puisse plus sélectionner les lignes de mon tableau si j'utilise mon CellRender ?
J'ai essayé de faire un table.setRowSelectionAllowed(true); Mais ça ne va pas mieux.
Elle sont probablement selectionnees mais la cellule n'est pas peinte de maniere a indiquer la selection. Il te faut modifier ton CellRenderer personalise pour prendre en compte cet etat (en faisant varier la couleur de fond du JTextArea par exemple).
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Ah ben oui, quel c.. je suis ! J'ai bêtement repris une partie de l'exemple de theyankee76, mais seulement la partie en rapport avec les retours à la ligne.
Bon ça repousse le problème un peu plus loin. J'utilise la librairie JGoodies Looks et c'est elle qui définissait les couleurs. Si j'utilise un seul thème, pas de problème. Mais si j'en utilise plusieurs ça risque de poser des problème. Je vais essayer de voir s'il y a moyen de récupérer les couleurs du thème actuellement utilisé et de l'appliquer dans mon cellRender.
Pour ceux que ça intéresserait, pour utiliser les couleurs des thème JGoodies (ou autre) il faut faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 if (isSelected) { super.setForeground(table.getSelectionForeground()); super.setBackground(table.getSelectionBackground()); } else { super.setForeground(table.getForeground()); super.setBackground(table.getBackground()); }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager