Comment faire pour supprimer une ligne de JTable?
Je veux supprimer des enregistrements dans une JTable. Comment puis-je le faire?
Astuce: si vous expliquez ce que vous avez déjà essayé, et que des tutoriels en ligne vous avez lu, les gens seront plus enclins à vous aider. Ou de donner un exemple de code et de nous dire qui peu ne fonctionne pas. Lire ceci si vous n'avez pas déjà: java.sun.com/docs/books/tutorial/uiswing/components/table.html
OriginalL'auteur | 2009-07-13
Vous devez vous connecter pour publier un commentaire.
Afin de supprimer une ligne d'une JTable, vous devez supprimer la ligne cible à partir de la sous-jacentes TableModel. Si, par exemple, votre TableModel est une instance de DefaultTableModel, vous pouvez supprimer une ligne de la manière suivante:
Eh bien, si vous avez créé votre propre personnalisé TableModel, alors vous êtes responsable de la création de votre propre "removeRow" la méthode. Regardez le code source de la DefaultTableModel pour voir comment c'est fait. La solution facile est d'utiliser le DefaultTableModel. Pourquoi pensez-vous que vous avez besoin pour créer un TableModel? Jusqu'à ce que vous comprenez les bases de l'utilisation de modèles utiliser les valeurs par défaut fournies.
OriginalL'auteur Brandon E Taylor
Si vous avez besoin d'une simple solution de travail, essayez d'utiliser DefaultTableModel.
Si vous avez créé votre propre modèle de table, qui s'étend AbstractTableModel, alors vous devriez également mettre en œuvre removeRow() la méthode. L'exacte mise en œuvre dépend de la structure sous-jacente, que vous avez utilisé pour stocker des données.
Par exemple, si vous avez utilisé Vecteur, alors il peut être quelque chose comme ceci:
Si vous avez utilisé la Liste, alors il serait très semblables:
HashMap:
Et si vous êtes en utilisant des tableaux comme celui-ci
alors vous êtes hors de la chance, car il n'y a aucun moyen de supprimer dynamiquement des éléments de tableaux. Vous pouvez essayer d'utiliser les tableaux à stocker séparément des drapeaux notifier les lignes qui sont supprimés et qui ne le sont pas, ou par quelque autre façon détournée, mais je ne vous le conseille... Qui introduirait une complexité inutile, et serait en fait juste être la résolution d'un problème en en créant un autre. C'est un moyen infaillible pour la fin de ici. Essayez l'un des moyens ci-dessus pour stocker les données de la table à la place.
Pour une meilleure compréhension de la façon dont cela fonctionne, et quoi faire pour faire de votre propre modèle fonctionne correctement, j'ai fortement vous conseillons de vous référer à Java Tutoriel, DefaultTableModel API et c'est le code source.
OriginalL'auteur Kirill Strizhak
La façon correcte d'appliquer un filtre à un JTable est par le biais de la RowFilter interface ajouté à un TableRowSorter. À l'aide de cette interface, l'affichage d'un modèle peut être modifié sans changer le modèle sous-jacent. Cette stratégie préserve le Modèle-Vue-Contrôleur de paradigme, alors que la suppression de lignes que vous souhaitez masquer dans le modèle lui-même brise le paradigme par la confusion de votre séparation des préoccupations.
OriginalL'auteur codethulhu
Un JTable se forme normalement à la Vue d'un MVC mise en œuvre. Vous aurez envie de supprimer des lignes de votre modèle. La JTable, qui doit être à l'écoute de ces modifications, mise à jour afin de refléter cette suppression. Par conséquent, vous ne trouverez pas removeRow() ou similaire en tant que méthode sur JTable.
Lisez des choses comme: java.sun.com/docs/books/tutorial/uiswing/components/table.html
En bref, vous créer un TableModel. JTable ne pas stocker les lignes, il délégués qu'à un TableModel. Vous pouvez sous-classe de AbstractTableModel si vous le souhaitez. Appel fireTableRowsDeleted() à chaque fois que vous supprimez des lignes.
OriginalL'auteur dave
Regarder la DefaultTableModel pour un modèle simple que vous pouvez utiliser:
http://java.sun.com/javase/6/docs/api/javax/swing/table/DefaultTableModel.html
Cela s'étend de la AbstractTableModel, mais devrait être suffisant pour les objectifs de base. Vous pouvez toujours étendre AbstractTableModel et de créer votre propre. Assurez-vous que vous définissez sur la JTable.
http://java.sun.com/javase/6/docs/api/javax/swing/table/AbstractTableModel.html
Look, à la base, Soleil tutoriel pour plus d'informations sur l'utilisation de la JTable avec le modèle de table:
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#data
OriginalL'auteur Jon
mmm, c'est très simple gars
OriginalL'auteur cmujica