Ich kodiere eine JTable, die in der Lage ist, häufige Aktualisierungen zu verarbeiten. Typischerweise hat diese JTable ~1000 Zeilen von Daten, und einige der Spalten werden häufig aktualisieren, weil ihre Werte von Aktienkursen abgeleitet sind, die eine Menge während der Marktstunden bewegt.
Das Problem, das ich konfrontiert bin, ist, dass wenn große # von Zeilen (z.B. 80 %) aktualisiert werden, die JTable sehr langsam für 20-30 Sekunden oder so, die der Profiler zeigt, dass der EDT-Thread extrem beschäftigt ist, Behandlung tableChanged Aufrufe.
Ich versuche, die Änderungen zu reduzieren, indem ich 1) fireTableCellUpdated unterdrücke 2) Wenn es <= 50 Zeilenänderungen gibt, rufe ich fireTableRowUpdate für einzelne Zeilen auf 3) Wenn es > 50 Zeilen Änderungen gibt, rufe ich fireTableDataChanged für die gesamte Tabelle auf.
Es ist besser, aber immer noch langsam, wenn es häufige Updates gibt, mein Verständnis ist, dass fireTableDataChanged auch langsam ist. Also, wenn Daten Updates häufig genug, fireTableDataChanged wird häufig aufgerufen werden, und die GUI wird träge fühlen.
Kann jemand, der sich mit diesem Thema auskennt, eine optimale Vorgehensweise bei der Verwendung von fireTableRowsUpdate empfehlen? fireTableDataChanged und fireTableStructureChanged empfehlen, um die Lebendigkeit und Leistung der GUI zu verbessern? Wenn Sie Hinweise auf Beispielcodes haben, die dieses Problem lösen, wäre das noch besser.
Vielen Dank!
Anthony Si