Heim >Java >javaLernprogramm >Warum werden meine JTable-Zeilen dupliziert und wie kann ich das mit „fireTableStructureChanged()' beheben?

Warum werden meine JTable-Zeilen dupliziert und wie kann ich das mit „fireTableStructureChanged()' beheben?

Susan Sarandon
Susan SarandonOriginal
2024-12-22 10:05:46720Durchsuche

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

Duplikate von JTable-Zeilen: Behebung der Grundursache

In diesem Fall ist das Problem mit doppelten Werten in der JTable-Zeile auf eine falsche Implementierung zurückzuführen der Methode fireTableDataChanged() im benutzerdefinierten CollectionDataModel.

Korrekte Implementierung von fireTableDataChanged()

Die Methode fireTableDataChanged() sollte die JTable darüber informieren, dass sich die zugrunde liegenden Daten geändert haben, und so die Aktualisierung der Tabellenanzeige auslösen. Im bereitgestellten Codeausschnitt scheint die Methode nicht implementiert zu sein.

Um sie korrekt zu implementieren, fügen Sie den folgenden Code am Ende der populate()-Methode hinzu:

fireTableStructureChanged();

Erklärung

Die Methode fireTableStructureChanged() gibt an, dass die Struktur der Daten, wie z. B. die Anzahl der Spalten oder Zeilen, hat sich geändert. Dies veranlasst die Tabelle, ihre Spalten und Zeilen korrekt neu zu erstellen.

Beispielcode

Hier ist der korrigierte Code mit der implementierten Methode fireTableStructureChanged():

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();
}

Durch die korrekte Implementierung der Methode fireTableStructureChanged() wird die Tabelle korrekt aktualisiert, wenn neue Daten vorliegen ausgefüllt, wodurch das Auftreten doppelter Zeilen verhindert wird.

Das obige ist der detaillierte Inhalt vonWarum werden meine JTable-Zeilen dupliziert und wie kann ich das mit „fireTableStructureChanged()' beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn