我有JTable
和TableModel
扩展AbstractTableModel
。我想动态设置表中的列数。我通过向名为TableModel
的{{1}}添加属性并让column_count
返回getColumnCount
来实现此功能。我还添加了一个方法column_count
,用于设置setColumnCount
并调用column_count
。不幸的是,当我运行该程序时,我不断获得fireTableStructureChanged
例外。谁能告诉我我做错了什么,或者建议更好的解决方案?
这是一个堆栈跟踪:
ArrayIndexOutOfBounds
答案 0 :(得分:0)
您的getValueAt()
方法在哪里获取数据?如果它是一个ArrayList并且你增加了列大小,那么表将尝试从列表中获取该列并抛出异常。
如果这不是问题,请使用DefaultTableModel和DefaultTableModel.addColumn()添加列,或者确保从事件调度线程对表模型进行任何更改。
答案 1 :(得分:0)
我认为异常的原因如下:
原因可能是因为DefaultTableColumnModel的底层代码不知道新列,并且其Vector未被正确更改。
要解决此问题,您应该编写自己的自定义TableColumnModel,它可以正确处理更改的维度。
答案 2 :(得分:0)
使用已更改的setModel(tm)
来调用JTable
的方法TableModel
在我的案例中解决了类似的错误。