Heim >Java >javaLernprogramm >Warum werden meine JTable-Zeilen dupliziert und wie kann ich das mit „fireTableStructureChanged()' beheben?
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!