Largeur colonne en fonction du contenu
Bonjour,
J'ai un JTable que j'alimente dynamiquement et je souhaiterais que la largeur des colonne se face en fonction du contenu ajouté.
J'ai donc fait ceci mais il ne se passe rien:
Code:
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
| public class ModuleTable extends JPanel{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1L;
private ModuleTableModele moduleModele = new ModuleTableModele();
private JTable tableau;
private JPanel panTableau;
public ModuleTable() {
super();
tableau = new JTable(moduleModele);
TableColumnModel modelecolonne= tableau.getColumnModel();
TableModel modele = tableau.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);
}
tableau.updateUI();
tableau.getTableHeader().setBackground(Color.YELLOW);
//Empêche le déplacement des colonne
tableau.getTableHeader().setReorderingAllowed(false);
//Empêche de changer la taille des colonne
tableau.getTableHeader().setResizingAllowed(false);
tableau.setDefaultRenderer(Color.class, new CouleurModuleRenderer());
tableau.setDefaultEditor(Color.class, new ColorCellEditor());
panTableau = new JPanel();
panTableau.add(tableau);
add(new JScrollPane(tableau));
}
public void addModule(metiers.Module module){
moduleModele.addModule(module);
}
public List<Module> getModules() {
List<Module> modules = new ArrayList<Module>();
modules = moduleModele.getModules();
return modules;
}
} |
Code:
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
| public class ModuleTableModele extends AbstractTableModel{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1L;
private final List<Module> modules = new ArrayList<Module>();
private final String[] entetes = {"Nom", "Abréviation", "Couleur", "Nombre séances"};
public ModuleTableModele() {
super();
}
public int getRowCount() {
return modules.size();
}
public int getColumnCount() {
return entetes.length;
}
public String getColumnName(int columnIndex) {
return entetes[columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
if(aValue != null){
Module module = modules.get(rowIndex);
switch(columnIndex){
case 0:
module.setNom((String)aValue);
break;
case 1:
module.setAbreviation((String)aValue);
break;
case 2:
module.setCouleur((Color)aValue);
break;
case 3:
String seance = (String)aValue;
module.setNbSeance(Integer.parseInt(seance));
break;
}
}
}
public Object getValueAt(int rowIndex, int columnIndex) {
switch(columnIndex){
case 0:
return modules.get(rowIndex).getNom();
case 1:
return modules.get(rowIndex).getAbreviation();
case 2:
return modules.get(rowIndex).getCouleur();
case 3:
return modules.get(rowIndex).getNbSeance();
default:
return null;
}
}
public Class getColumnClass(int columnIndex){
switch(columnIndex){
case 2:
return Color.class;
default:
return Object.class;
}
}
public void addModule(Module module) {
modules.add(module);
fireTableRowsInserted(modules.size() -1, modules.size() -1);
}
public void removeModule(int rowIndex) {
modules.remove(rowIndex);
fireTableRowsDeleted(rowIndex, rowIndex);
}
public List<Module> getModules(){
return modules;
}
} |
Merci de votre aide