Maison >Java >javaDidacticiel >Pourquoi mes lignes JTable sont-elles dupliquées et comment puis-je y remédier à l'aide de « fireTableStructureChanged() » ?

Pourquoi mes lignes JTable sont-elles dupliquées et comment puis-je y remédier à l'aide de « fireTableStructureChanged() » ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-22 10:05:46758parcourir

Why Are My JTable Rows Duplicating, and How Can I Fix It Using `fireTableStructureChanged()`?

Doublons de ligne JTable : résoudre la cause profonde

Dans ce cas, le problème des valeurs en double dans la ligne JTable provient d'une implémentation incorrecte de la méthode fireTableDataChanged() dans le CollectionDataModel personnalisé.

Implémentation correcte de fireTableDataChanged()

La méthode fireTableDataChanged() doit informer le JTable que les données sous-jacentes ont changé, déclenchant la mise à jour de l'affichage de la table. Dans l'extrait de code fourni, la méthode ne semble pas être implémentée.

Pour l'implémenter correctement, ajoutez le code suivant à la fin de la méthode populate() :

fireTableStructureChanged();

Explication

La méthode fireTableStructureChanged() indique que la structure des données, comme le nombre de colonnes ou de lignes, a changé. Cela déclenche la reconstruction correcte de ses colonnes et de ses lignes par la table.

Exemple de code

Voici le code corrigé avec la méthode fireTableStructureChanged() implémentée :

public void populate(Collection c) {
    data.clear();
    for(Item i : c.getItems()) {
        ArrayList<String> row = new ArrayList<String>();
        for(Property p : i.getProperties().values()) {
            row.add(p.toString());
        }
        data.add(row);
    }
    fireTableStructureChanged();
}

En implémentant correctement la méthode fireTableStructureChanged(), la table sera mise à jour correctement lorsque de nouvelles données seront renseignées, empêchant ainsi le apparition de lignes en double.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn