Я кодирую JTable, который способен обрабатывать частые обновления. Обычно этот JTable имеет ~ 1000 рядов данных, и некоторые из столбцов будут часто обновляться, потому что их значения производятся из цены акций, которая много перемещается в течение рыночных часов.Java JTable с частым обновлением?
Проблема, с которой я сталкиваюсь, заключается в том, что когда большое количество строк (например, 80%) обновляется, JTable становится очень медленным в течение 20-30 секунд или около того, что профайлер показывает, что поток EDT чрезвычайно занят, Обработка таблицы.
Я пытаюсь свернуть изменения, 1) подавляя fireTableCellUpdated 2) Если есть < = 50 строк изменения, вызовите fireTableRowUpdate на отдельных строках 3) Если> 50 строк изменений, называя fireTableDataChanged для всей таблицы ,
Лучше, но все же медленно, когда есть частые обновления, я понимаю, что fireTableDataChanged также медленный. Поэтому, если данные обновляются достаточно часто, fireTableDataChanged будет вызываться часто, и GUI будет чувствовать себя вялым.
Может ли кто-нибудь из испытуемых в этой теме рекомендовать наилучшую практику использования fireTableRowsUpdate, fireTableDataChanged и fireTableStructureChanged, чтобы улучшить жизнеспособность и производительность GUI? Если у вас есть указатели на примеры кодов, которые решают эту проблему, это будет еще лучше.
Большое спасибо
Энтони Si
@ Энтони Си: в дополнение к моему ответу, я хотел бы указать, что частые события - это не единственная проблема. Ужасные, ужасно медленные игры по умолчанию JTable/header/cells (re) - огромная часть проблемы, с которой вы столкнулись, все это объясняется в ссылке, которую я дал вам в своем ответе. – SyntaxT3rr0r