Wie ist die Beziehung zwischen einem JTable
, TableModel
und TableData
? Wenn ich nur die TableData
ändern, ändert das auch die Datenanzeige auf der Komponente JTable
oder ich muss eine Methode aufrufen, um die beiden zu synchronisieren. Ich habe this angesehen, aber es nicht explizit erzählt oder zeigt mir die Beziehung in Bezug auf UpdatesBeziehung zwischen JTable, TableModel & TableData
Antwort
Wenn Sie einen Wert in den TableModel-Daten ändern, müssen Sie dieses Ereignis auslösen. z.B. Ändern Sie den Wert einer Zelle, rufen Sie fireTableCellUpdated(row, col);
.
Betrachten Sie this genauer.
Ich nehme an, Sie verwenden den Ausdruck "TableData", um nur die Daten zu meinen, die in der JTable angezeigt werden. Ob Sie automatische Updates sehen oder nicht, hängt von Ihrem TableModel ab und davon, wie es mit Ihren Daten interagiert.
Ein TableModel sollte Ereignisse auslösen, wenn sich das zugrunde liegende Datenmodell geändert hat. Dies wiederum teilt der JTable mit, dass eine Änderung aufgetreten ist und neu gezeichnet werden sollte. Im Hinblick auf eine Beziehung hört die JTable Ereignisänderungen auf dem TableModel ab; Das TableModel kennt die JTable nicht.
Je nachdem, wie Ihr Modell organisiert ist, können sich die darunter liegenden Daten ändern, ohne dass das TableModel dies erkennt. Wenn Sie in diesem Fall eine direkte Passthrough-Funktion vom TableModel zu den Daten haben, ändern sich die Werte auf dem Bildschirm, wenn ein Repaint auftritt (Bildschirmgröße, Mausbewegung usw.), aber Sie möchten das Ereignis erzwingen, das Sie erhalten sollen TableModel, um die JTable über die oben genannten Ereignisse zu benachrichtigen. In Bezug auf die Beziehung kennt das TableModel die Tabellendaten, aber die Tabellendaten kennen das Modell normalerweise nicht. Das TableModel überwacht möglicherweise die Daten auf Änderungen oder nicht.
Beim Festlegen des TableModel in einer JTable fügt die Tabelle einen Observer hinzu (TableModelListener), um sich über Änderungen im Modell zu informieren.
Beim Ändern von Daten im Modell wird erwartet, dass das Modell die registrierten Listener benachrichtigt, indem es eine TableModelEvent auslöst. Das Ereignis selbst kann zusätzliche Informationen über die Granularität der Änderung enthalten (ob sich die Struktur signifikant geändert hat oder nur einige Zelldaten geändert wurden), damit die JTable eine optimierte Ansichtsaktualisierung durchführen kann.
- 1. Preserve JTable Auswahl über TableModel Änderung
- 2. create TableModel und befüllen jTable dynamisch
- 3. Vergleichen von 2 Spalten in JTable für Daten
- 4. PySide füllen leer TableModel
- 5. HowTo Eine Zeile in einer JTable mit einem benutzerdefinierten TableModel entfernen
- 6. TableModel, das nicht in einem JScrollPane aufgerufen wird, das eine JTable enthält
- 7. löschen Sie eine Spalte von Daten aus einem jtable Tablemodel Klon
- 8. JTable Renderer mit Sortierung
- 9. JTable zu SWT Group hinzufügen
- 10. Beziehung zwischen Spaltenwerten
- 11. Die Beziehung zwischen Modellen
- 12. Gegenseitige Beziehung zwischen Personen
- 13. Custom TableModel - Das gleiche Modell für alle Abfragen
- 14. TableModel vs ColumnModel: Wem gehört der Spaltenwert?
- 15. in JTable Abstand zwischen Bildern entfernen
- 16. Wie funktioniert JTable RowFilter?
- 17. Beziehung zwischen Bytecodebefehle und Prozessoroperationen
- 18. Beziehung zwischen custinvoiceTrans und GeneralJournalAccountEntry
- 19. Beziehung zwischen GEF und GMF?
- 20. Beziehung zwischen Hadoop und Datenbanken
- 21. angezeigte Beziehung Graphen zwischen Objekten
- 22. Beziehung zwischen zwei Tabellen, SQLAlchemy
- 23. Beziehung zwischen zwei Spalten Python
- 24. Beziehung zwischen WebSecurityConfiguratorAdapter und ResourceServerConfigurerAdapter
- 25. Beziehung zwischen zwei Sammlung mongodb
- 26. Beziehung zwischen OAuth und JWT
- 27. Beziehung zwischen EXTJS und JSON
- 28. Beziehung zwischen HttpContext.Request.Cookies und HttpContext.Response.Cookies
- 29. Beziehung zwischen Vorverarbeitung und Übersetzung
- 30. Beziehung zwischen Entitäten nicht persistent
fireTableCellUpdated (Zeile, Spalte) gilt nur für TableModels, die Unterklassen von AbstractTableModel sind. –