我在JTable中显示数组列表。 我有一个非常简单的删除方法:
@Override
public void DeleteContact(int id) {
Database c = GetSingleContact(id);
contactsList.remove(c);
然后将其保存到文件中。
一切正常,但是当我删除一个元素时,它在JTable中留下了填充为0的空白空间,我无法摆脱它,大小计算方法仍将其视为元素,并且其他元素未重新编号(技术上为arraylist.remove (x)应该自动执行)。
答案 0 :(得分:2)
(从技术上讲arraylist.remove(x)应该自动执行)。
不应该。
JTable使用TableModel来保存数据。对数据的任何更改都需要在TableModel上完成。然后,TableModel将通知表重新绘制自身。
如果将ArrayList用作TableModel的数据存储,则在deleteContact()
方法中,您需要调用:
fireTableRowsDeleted( ...);
自定义TableModel的方法。
有关如何为自定义对象创建自定义TableModel的分步示例,请参见:Row Table Model。