Bon, je crois qu'il y'a vraiment un truc que j'ai raté avec ce principe.
Voici un exemple d'editor que j'utilise :
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 public class QueryAttributeTableCellEditor extends AbstractCellEditor implements TableCellEditor { JComboBox component; Logger logger = Logger.getLogger(QueryAttributeTableCellEditor.class); public Object getCellEditorValue() { Object value; value = component.getSelectedItem(); return value; } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { QueryAttribute attribute; if (value instanceof QueryAttribute) { attribute = (QueryAttribute) value; component = OperatorComponentFactory.getInstance().createComponent(column, attribute); } else { logger.warn("Anormaly coverage, value must be an instance of QueryAttribute"); } return component; } }
Ce qui me pose souci, c'est qu'en effectuant ainsi, dés que je modifie légèrement ma Jtable (redimensionnement d'une colonne, édition d'une cellule), cela me créé un nouveau component pour chaque cellule, au lieu de reprendre le component existant.
Ce qui implique d'une part une grosse charge puisque cela créé/détruit des dizaines de composants à chaque fois pour rien, plus d'autres problèmes.
Alors, est ce que j'ai définitivement raté un truc la dessus et il est possible d'implémenter un renderer/editor sans qu'il créé un nouveau composant à chaque affichage, ou alors ce comportement tout à fait normal ?
Partager