Une chose que je ne comprend pas avec les editors/renderer
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:
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 ?