Comment maintenir la JTable cellule rendu après la cellule modifier
Vous les gars étaient tellement génial de me pointer dans la bonne direction sur ma dernière question et j'ai une sorte de prolongement de ma question originale ici:
Comment définir un JTable colonne de Chaîne et de sorte que le Double?
Puisque j'ai maintenant une colonne de prix formaté comme $###,##0.00 à l'aide de mon rendu de cellule personnalisé, j'ai maintenant mis en place une component swing jtextfield Éditeur pour la cellule. Le montage de la cellule fonctionne très bien, sauf quand la valeur est mise à jour, le nombre format défini dans mon moteur de rendu personnalisé ne semble plus en forme la cellule (je suis de perdre de l' $ après modification est validée). Est-ce convertisseur ne doit pas rendre les cellules, même après la période initiale de l'affichage des données?
J'ai essayé d'utiliser les opérations suivantes avec pas de chance:
((AbstractTableModel) table.getModel()).fireTableDataChanged();
J'espérais que ce serait forcer la table à revalider et repeindre les cellules en utilisant le moteur de rendu personnalisé pour rendre les nouvelles valeurs, mais cela n'a malheureusement pas de travail...
Suis-je raté quelque chose... de toute Évidence, mais quoi?
OriginalL'auteur titanic_fanatic | 2012-04-08
Vous devez vous connecter pour publier un commentaire.
Lorsque votre éditeur conclut, la table
editingStopped()
méthode de collecte la nouvelle valeur viagetCellEditorValue()
et l'utilise poursetValueAt()
dans le modèle. Le modèle, à son tour, devraitfireTableCellUpdated()
, qui invoquera le prescrit moteur de rendu. L'extension de la par défaut devrait être suffisant pour supporterNumber
mise en forme. Dans d'autres cas, il peut être pratique d'utiliser une instance de votre moteur de rendu comme votre éditeur de composant; ce exemple montre une implémentation typique.Addendum: Voici un exemple de base à l'aide de l'éditeur par défaut et le moteur de rendu implémentations.
Addendum: Grâce à des commentaires utiles de @mKorbel, j'ai mis à jour l'exemple de sélectionner la cellule de texte pour l'édition, comme décrit dans @camickr de l'article Tableau Sélectionner Tout Éditeur.
Bon point. Pour la matrice d'entrée, l'éditeur intentionnellement renvoie zéro en cas de
NumberFormatException
;cancelCellEditing()
serait plus général de l'alternative.c'est même pour JFormattedTextField ou JSpinner comme CellEditor, je suis sûr que Rob avons ..., il vous faudra retourner le Document, Rob où en êtes-vous 🙂
désolé, sans succès
pas de succès avec CurrencyInstance
OriginalL'auteur trashgod