所以我正在使用一个JTable
,它与我自己的自定义数据模型相关联。这一切都是功能性的,但我遇到的问题是,任何时候我对表进行更改(触发 tableDataChanged、tableStructureChanged 等)所有列宽都会自行重置为默认值。我从研究中了解到,这与TableColumnModel
默认分配的有关。在此重置之外,我对 的功能感到满意DefaultTableColumnModel
,但如果用户应该调整列的大小(通过拖动列标题的边缘),我只想保留列的宽度。
我知道setPreferredWidth()
TableColumns,并且我已经能够成功地做到这一点;我想我的问题是我应该听什么样的事件来保存和设置这个首选宽度。我尝试将 a 添加PropertyChangeListener
到表头,但是每当我尝试调整大小时,我都会得到一个 StackOverflow(我假设它是递归运行的)。我完全可以在数据模型中为列宽添加一个额外的数据成员,并将其存储在那里,但我只是不知道何时/如何设置这些宽度,以免它们被覆盖fireTableStructureChanged()
,等等. 事件。想法?