数组列表.remove函数不能完全删除元素,在JTable

时间:2019-06-04 19:08:07

标签: java swing arraylist jtable

我在JTable中显示数组列表。 我有一个非常简单的删除方法:

@Override
public void DeleteContact(int id) {
    Database c = GetSingleContact(id);
    contactsList.remove(c);

然后将其保存到文件中。

一切正常,但是当我删除一个元素时,它在JTable中留下了填充为0的空白空间,我无法摆脱它,大小计算方法仍将其视为元素,并且其他元素未重新编号(技术上为arraylist.remove (x)应该自动执行)。

1 个答案:

答案 0 :(得分:2)

  

(从技术上讲arraylist.remove(x)应该自动执行)。

不应该。

JTable使用TableModel来保存数据。对数据的任何更改都需要在TableModel上完成。然后,TableModel将通知表重新绘制自身。

如果将ArrayList用作TableModel的数据存储,则在deleteContact()方法中,您需要调用:

 fireTableRowsDeleted( ...);

自定义TableModel的方法。

有关如何为自定义对象创建自定义TableModel的分步示例,请参见:Row Table Model