[JTABLE][MODEL][RENDERER]Communication
Bonjour a tous,
En fait j'ai plusieurs questions :
J'ai une Jtable, un model de table (AbstractTableModel) et un renderer(DefaultCellRenderer)
1. Les données se trouvant au niveau du model sont dynamique. A tout moment je peux avoir une colonne en plus, une colonne en moins.
J'avertis mon model via une methode qu'il faut recharger les données.
ensuite je lui dis que la structureà changer (FireStructureDataChanged).
Cependant après l'appel de cette méthode, le nombre de colonne qui aurait du changer reste au même nombre...
Code:
1 2
|
Est ce que j'utilise le bonne event (fireTableStructureChanged()) ? |
2. Lors de l'affectation du renderer au Jtable, je ne connais que la colonne 0. Le renderer est valable pour toutes les cellules de mon tableau ... J'aimerais que lors du changement des données, mon renderer s'applique a toutes les cellules et pas uniquement aux cellules de la colonne 0.
Code:
1 2
|
Quel event appeler pour ça ? |
Merci à tous pour vos réponse
voici les quelques lignes de code :
Application GUI :
Code:
1 2 3 4 5 6 7 8
|
jTable2 = new JTable();
TabCellRender tcr = new TabCellRender();
jTable2.setModel(mst);
jTable2.setDefaultRenderer(String.class,tcr);
jTable2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION );
jScrollPane2.getViewport().add(jTable2);
mst.fireTableStructureChanged(); |
au niveau du modele c'est la methode setList qui est appellée :
Code:
1 2 3 4 5 6 7 8 9 10
|
public void setList(ArrayList ar){
if(this.ar != null) this.ar.remove(this.ar.size()-1);
this.ar = ar;
MStagiaires ms = new MStagiaires();
ms.setId(((MStagiaires)ar.get(0)).getId());
ms.findById();
ar.add(ms);
fireTableStructureChanged();
} |