2009-12-03 8 views
1

J'ai actuellement un problème en modifiant le contenu d'une cellule dans un JTable modifie le contenu d'un autre; deux des colonnes sont mutuellement exclusives. Ils sont les deux cases à cocher.CellEditors mutuellement exclusifs dans JTable

À l'heure actuelle, si je modifie une cellule, ce n'est que lorsque l'autre est redessinée qu'elle se met à jour. Par conséquent, les deux cellules de la ligne peuvent être affichées comme étant sélectionnées à la fois. Cela peut être surmonté en appelant updateUI(), mais il est lent et n'est généralement pas une bonne idée.

Quelqu'un at-il des conseils ou des suggestions?

+0

Malheureusement, la solution doit être en Java 1.4 – colinjwebb

+0

Il n'est pas tout à fait clair ce qui se passe par rapport à votre comportement prévu. Pourriez-vous fournir un exemple de code? – rob

Répondre

1

Il semble que vous devriez utiliser un TableModelListener pour écouter les modifications apportées au TableModel. Lorsqu'une case à cocher est modifiée, vous recevez un événement de mise à jour et vous mettez ensuite à jour l'autre case en utilisant model.setValueAt (...). Le modèle est responsable de notifier la vue pour repeindre la cellule.

+0

J'ai ajouté un TableModelListener au TableModel. Cependant, il semble seulement se déclencher quand un objet est ajouté/supprimé, plutôt que lorsque les attributs de l'objet sont modifiés ... des idées? – colinjwebb

+0

L'éditeur de table par défaut ne modifie pas un objet, il crée toujours un nouvel objet (String, Date, Integer) en fonction de la classe de la colonne. Si vous utilisez un éditeur personnalisé, je ne sais pas ce que fait votre code. Si vous avez besoin de plus d'aide poster votre http://sscce.org (SSCCE) qui a démontré le problème. – camickr