Как сохранить заданную пользователем-ширину столбцов в JTable?

Итак, я работаю с JTable, который привязан к пользовательская модель данных моей собственной. Это все работает, но проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда я вношу изменения в таблицу, (активируются tableDataChanged, tableStructureChanged и т. д. )все ширины столбцов сбрасываются до значений по умолчанию. Из исследований я понял, что это связано с TableColumnModel, назначенным по умолчанию. Помимо этого сброса, я доволен функциональностью DefaultTableColumnModel, но я просто хотел бы сохранить ширину столбцов, если пользователь должен изменить их размер (, перетащив край заголовка столбца).

Я знаю о setPreferredWidth()для TableColumns, и мне удалось это сделать успешно; Я предполагаю, что мой вопрос заключается в том, какое событие я должен слушать, чтобы сохранить и установить эту предпочтительную ширину. Я попытался добавить PropertyChangeListenerв заголовок таблицы, но каждый раз, когда я пытался изменить размер, я получал StackOverflow (, я предполагаю, что он выполнялся рекурсивно). Я совершенно согласен с добавлением дополнительного члена данных в модель данных для ширины столбцов и сохранением его там, но я просто не знаю, когда и как установить эти ширины, чтобы они не переопределялись fireTableStructureChanged()и т. д. события. Мысли?

6
задан kcoppock 17 April 2012 в 14:45
поделиться