Bonjour,
Sauriez vous comment faire pour ajuster la taille d'une colonne d'une table JTable a la taille du texte qu'il y'a dedans ?
Merci,
Bonjour,
Sauriez vous comment faire pour ajuster la taille d'une colonne d'une table JTable a la taille du texte qu'il y'a dedans ?
Merci,
Bonjour,
Attention dans cette solution assigne des tailles arbitraires aux cellules...
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121 import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.event.TableModelEvent; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableColumnModel; import javax.swing.table.TableModel; /** * Classe Ex1 */ public class Ex1 extends JFrame{ public static String titres[]={"col1","col2","col3","col4"}; public static String valeurs[][]={ {"valeur 1","valeur 2","valeur 3","valeur 4"}, {"valeur 5","valeur 6","valeur 7","valeur 8"}, {"valeur 9","valeur 10","valeur 11","valeur 12"}, {"valeur 13","valeur 14","valeur 15","valeur 16"} }; public static class Modele extends AbstractTableModel { /* (non-Javadoc) * @see javax.swing.table.TableModel#getColumnCount() */ public int getColumnCount() { return titres.length; } /* (non-Javadoc) * @see javax.swing.table.TableModel#getRowCount() */ public int getRowCount() { return valeurs.length; } /* (non-Javadoc) * @see javax.swing.table.TableModel#isCellEditable(int, int) */ public boolean isCellEditable(int rowIndex, int columnIndex) { return true; } /* (non-Javadoc) * @see javax.swing.table.TableModel#getColumnClass(int) */ public Class getColumnClass(int columnIndex) { return String.class; } /* (non-Javadoc) * @see javax.swing.table.TableModel#getValueAt(int, int) */ public Object getValueAt(int rowIndex, int columnIndex) { return valeurs[rowIndex][columnIndex]; } /* (non-Javadoc) * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int) */ public void setValueAt(Object aValue, int rowIndex, int columnIndex) { valeurs[rowIndex][columnIndex]=aValue.toString(); fireTableDataChanged(); // Signal que les valeurs ont change } /* (non-Javadoc) * @see javax.swing.table.TableModel#getColumnName(int) */ public String getColumnName(int columnIndex) { return titres[columnIndex]; } } public static class Table extends JTable{ public Table(){ super(new Modele()); // avec cette initialisation l'instance fait partie des listener de TableModelEvent setAutoResizeMode(JTable.AUTO_RESIZE_OFF); getTableHeader().setResizingAllowed(false); } /* * Declenché lors d'un changement de valeurs dans le modele */ public void tableChanged(TableModelEvent e) { super.tableChanged(e); TableColumnModel modelecolonne=getColumnModel(); TableModel modele=getModel(); int total=modelecolonne.getColumnCount(); for(int i=0;i<total;i++){ int taille=0; int total2=modele.getRowCount(); for(int j=0;j<total2;j++){ // Partie determinant la taille de la cellule de ligne j et de colonne i int taille2=modele.getValueAt(j,i).toString().length()*7; // determination arbitraire if(taille2>taille){ taille=taille2; } } modelecolonne.getColumn(i).setPreferredWidth(taille); } } } public Ex1(){ super("Ex"); getContentPane().add(new JScrollPane(new Table())); setSize(320,200); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String args[]) { new Ex1(); } }
Il faut les calculer en utilisant les fonctions graphique de type FontMetrics ou quelquechose dans le genre
Je crois qu'il y a quelquechose dans les FAQ
J'espere que c'etait ce dont tu avais besoin...
Cordialement,
PS: N'oublie pas le tag [resolu], quand ton probleme est resolu... Merci...
PS : N'oublie pas le tag [Résolu] (en cliquant sur http://pouiller.eclipse.free.fr/avatar/resolu.gif), si ton problème est résolu...
De rien,
PS: N'oublie pas le tag [resolu], quand ton probleme est resolu... Merci...
PS : N'oublie pas le tag [Résolu] (en cliquant sur http://pouiller.eclipse.free.fr/avatar/resolu.gif), si ton problème est résolu...
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